我想知道如何从样式中设置自定义控件的属性。
我有一个基于ToggleButton的自定义控件,名为“Substrate”,其中我有一个名为“SubstrateState”的依赖属性,它以枚举值作为值。
在另一个文件中,我有一个样式,它向控件添加了一个上下文菜单。
当用户按下上下文菜单中的某个菜单项时,我希望该属性触发一些预定义的值。
<Style TargetType="{x:Type local:Substrate}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:Substrate}">
<Grid>
<Grid.ContextMenu>
<ContextMenu Background="#212121">
<MenuItem Header="Aborted">
<MenuItem.Style>
<Style TargetType="MenuItem">
<Style.Triggers>
<Trigger Property="IsPressed"
Value="True">
<Setter Property="{Binding SubstrateState, RelativeSource={RelativeSource AncestorLevel=local:Substrate}, Converter=converter:StringToSubstrateStatesConverter}"
Value="Aborted" />
</Trigger>
</Style.Triggers>
</Style>
</MenuItem.Style>
</MenuItem>
</ContextMenu>
</Grid.ContextMenu>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
当我运行时,出现以下错误信息: “在'System.Windows.Baml2006.TypeConverterMarkupExtension'上提供值引发了异常。”
内部异常是“local:Substrate不是Int32的有效值。”
我在值转换器中设置断点,但它们从未触发,所以我认为问题出在其他地方。
我做错了什么?