我有以下XAML提供最近的文档菜单,如VS2012的FILE>最近的文档菜单
<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>
这个有效!但是,我的FILE MenuItem
块的所有XAML都被突出显示,我得到一个编译时错误(代码运行并且正常工作!),说
“System.Windows.StaticResourceExtension”类型的对象不能应用于需要“System.Windows.Style”类型的属性。
我正在使用.NET4.5和VS2012。 为什么会发生这种情况?如何解决?
感谢您的时间。
答案 0 :(得分:1)
尝试这样的事情
您应该能够将Style
移动到任何ResourceDictionary
并且它仍然有效,您只需要使用{{1}将其应用于MenuItem
内的项目}
ItemContainerStyle