我想显示最近打开的文件列表,所以有一个"file" MenuItem
。
这是我现在拥有的xaml:
<MenuItem Header="File}">
<MenuItem Header="Preferences..." Command="{Binding ShowOptionsViewCommand}" />
<Separator />
<ItemsControl ItemsSource="{Binding RecentFiles}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding DisplayPath}" CommandParameter="{Binding}"
Command="{Binding Path=DataContext.OpenRecentFileCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}">
</MenuItem>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Separator />
<MenuItem Header="Exit" Command="{Binding CloseCommand}" />
</MenuItem>
但是,当我使用此代码时,
MenuItem
周围有一个怪异的偏移量,并且似乎在它们周围有一个容器。我该如何摆脱呢?这是它的屏幕截图:
alt text http://www.cote-soleil.be/FileMenu.png
最佳答案
“怪异的偏移量”是MenuItem
。父MenuItem
已经为您生成了一个子MenuItem
,但是您的DataTemplate
添加了第二个。试试这个:
<MenuItem Header="File}">
<MenuItem Header="Preferences..." Command="{Binding ShowOptionsViewCommand}" />
<Separator />
<ItemsControl ItemsSource="{Binding RecentFiles}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding DisplayPath}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="Command" Value="{Binding DataContext.OpenRecentFileCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}"/>
<Setter Property="CommandParameter" Value="{Binding}"/>
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
<Separator />
<MenuItem Header="Exit" Command="{Binding CloseCommand}" />
</MenuItem>
请注意,仅包含TextBlock的简化
DataTemplate
和ItemContainerStyle
可以在生成的MenuItem
上设置属性。关于wpf - 如何在WPF中将MenuItems的数据绑定(bind)列表合并到另一个MenuItem中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1399159/