我已经使用这个解决方案将一个菜单项绑定到了一个枚举上。枚举值被正确地显示出来,但我似乎无法为菜单项的子项设置默认选中值。换句话说,我希望菜单项的一个子项(我使用的枚举值)在默认情况下被选中。我尝试了以下代码,使用了一个样式和一个触发的Setter:
该枚举包含值,例如ItemA,我也尝试在Trigger Value属性中使用AnEnum.First或0(如此处所述),但无济于事。
是否建议使用DataTrigger?如果是这样,我该如何在XAML中编写它?或者,我应该在MenuItem的ItemTemplate中使用DataTemplate吗?
我还尝试通过SomeSetting.Items相关方法进行调整,但大多数属性(例如Current)都是只读的。
我知道你可以在代码后台中编写SomeSettingMenu.ItemsSource = Enum.GetValues(typeof(....)),但是我不知道如何以编程方式选择MenuItem中的项。
我还尝试过这段代码,但也没有用:
<ContextMenu>
<MenuItem Header="Some Setting" Name="SomeSettingMenu" DataContext="{Binding}"
ItemsSource="{Binding Source={StaticResource DisplayTypeValues}}"
Click="SomeSettingClicked">
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="MenuItem.IsCheckable" Value="True"/>
<Style.Triggers>
<Trigger Property="MenuItem.Header" Value="enums:AnEnum.ItemA" >
<Setter Property="MenuItem.IsChecked" Value="True"/>
</Trigger>
</Style.Triggers>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
</ContextMenu>
该枚举包含值,例如ItemA,我也尝试在Trigger Value属性中使用AnEnum.First或0(如此处所述),但无济于事。
是否建议使用DataTrigger?如果是这样,我该如何在XAML中编写它?或者,我应该在MenuItem的ItemTemplate中使用DataTemplate吗?
我还尝试通过SomeSetting.Items相关方法进行调整,但大多数属性(例如Current)都是只读的。
我知道你可以在代码后台中编写SomeSettingMenu.ItemsSource = Enum.GetValues(typeof(....)),但是我不知道如何以编程方式选择MenuItem中的项。
我还尝试过这段代码,但也没有用:
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Header}" Value="enums:DisplayType.ItemA">
<Setter Property="IsChecked" Value="True" />
</DataTrigger>
</Style.Triggers>
enums
是我正在使用的另一个程序集中的命名空间。任何想法都将不胜感激,非常感谢!