嵌套MenuItem

时间:2015-11-11 12:38:37

标签: c# wpf datatemplate menuitem

我有一个这样的嵌套上下文菜单:

<ContextMenu DataContext="{Binding PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}">
    <MenuItem Header="Thing Count" ItemsSource="{Binding ThingsProvider}">

注意具有来自ThingsProvider的子项的Thing Count父MenuItem。

ThingsProvider提供了一个ThingViewModel列表,其中包含Thing和IsChecked属性。我希望能够从我的主视图模型控制IsChecked,并通过MenuItem从用户控制,但我遇到了问题;如果我像这样使用ItemContainerStyle。

    <MenuItem.ItemContainerStyle>
        <Style TargetType="MenuItem">
            <Setter Property="Header" Value="{Binding Path=Thing, Mode=OneWay}"/>
            <Setter Property="IsChecked" Value="{Binding Path=IsChecked, UpdateSourceTrigger=PropertyChanged}"/>
        </Style>
    </MenuItem.ItemContainerStyle>

然后(可以预见我认为它是一种风格)它将观察ViewModel的IsChecked,但不会设置它。

如果我像这样使用ItemTemplate

<MenuItem.ItemTemplate>
  <DataTemplate>
    <TextBlock Text="{Binding Path=Thing, Mode=OneWay}"/>
  </DataTemplate>
 </MenuItem.ItemTemplate>

我无法访问MenuItem的IsChecked属性,因为我只获得了TextBlock。如果我将一个MenuItem放在ItemTemplate中,那么我最终会在我的UI中使用嵌套的MenuItems,它看起来很糟糕。

必须有办法做到这一点,但我现在很难过,有人可以帮忙吗?

干杯

0 个答案:

没有答案