我有以下XAML代码,可以提供类似于VS2012“文件”>“最近文档”菜单的最近文档菜单:
这个方法可以奏效!然而,所有与文件
<MenuItem Header="_FILE">
...
<MenuItem Header="_Recent Studies"
ItemsSource="{Binding RecentFiles}"
AlternationCount="{Binding RecentFiles.Count}"
HeaderTemplate="{x:Null}">
<MenuItem.Resources>
<Style TargetType="{x:Type MenuItem}"
BasedOn="{StaticResource {x:Type MenuItem}}">
<Setter Property="HeaderTemplate" >
<Setter.Value>
<DataTemplate>
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}{0}. {1}">
<Binding Path="(ItemsControl.AlternationIndex)"
RelativeSource="{RelativeSource FindAncestor,
AncestorType={x:Type MenuItem}}"/>
<Binding Path="FullFileName"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</MenuItem.Resources>
</MenuItem>
<Separator/>
<MenuItem Header="E_xit"
Height="22"
Icon="{Binding Source={StaticResource Close},
Converter={StaticResource drawingBrushToImageConverter}}"
Command="{Binding ExitCommand}" />
</MenuItem>
这个方法可以奏效!然而,所有与文件
MenuItem
块相关的XAML都被突出显示,并且我收到一个编译时错误(代码运行并成功了!),内容是:
不能将 "System.Windows.StaticResourceExtension" 类型的对象应用于 "System.Windows.Style" 类型的属性。
我使用的是.NET4.5和VS2012。为什么会发生这种情况?我该如何解决呢?
感谢您的时间。
MenuItem.Resources
移动到资源字典中,而不影响绑定到RecentFiles
对象的能力? - MoonKnightMenuItem
重载/模板... 我会更改基于属性并查看是否有帮助。 - MoonKnightMenuItem.Resources
的代码移动到父级 <MenuItem> 中,这样可以消除错误,但是我失去了对 RecentFiles 的绑定。我将尝试基于此方法... - MoonKnight