我将 MenuItem 的 ItemsSource 绑定到 ViewModel 中的 ObservableCollection。这是我的xml:
<MenuItem Header="_View"
ItemsSource="{Binding Windows}">
<MenuItem.ItemContainerStyle>
<Style>
<Setter Property="MenuItem.Header"
Value="{Binding Title}" />
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
这部分效果很好,但现在我还想将一些静态菜单项添加到同一个视图菜单项中,并用分隔符分隔。像这样的东西,即使我知道这行不通,因为我不能两次设置项目。
<MenuItem Header="_View"
ItemsSource="{Binding Windows}">
<MenuItem.ItemContainerStyle>
<Style>
<Setter Property="MenuItem.Header"
Value="{Binding Title}" />
</Style>
</MenuItem.ItemContainerStyle>
<Separator />
<MenuItem Header="item 1" />
<MenuItem Header="item 2" />
</MenuItem>
现在我已经通过向 MenuItem 添加另一个级别来创建一个解决方法,如下所示:
<MenuItem Header="_View">
<MenuItem Header="Windows"
ItemsSource="{Binding Windows}">
<MenuItem.ItemContainerStyle>
<Style>
<Setter Property="MenuItem.Header"
Value="{Binding Title}" />
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
<MenuItem Header="Load Layout" />
<MenuItem Header="Save Layout" />
</MenuItem>
这很好用,但如果可能的话,我宁愿没有子菜单。哦,我也更喜欢在 xaml 中而不是在后面的代码中执行此操作。有任何想法吗?