Moo*_*ght 5 c# wpf menuitem .net-4.5 visual-studio-2012
我有以下 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>
Run Code Online (Sandbox Code Playgroud)
这有效!但是,我的 FILEMenuItem块的所有 XAML 都被突出显示,并且我收到编译时错误(代码运行并正常工作!),说
“System.Windows.StaticResourceExtension”类型的对象不能应用于需要“System.Windows.Style”类型的属性。
我使用的是.NET4.5和VS2012。为什么会发生这种情况?我该如何解决?
谢谢你的时间。
尝试这样的事情
您应该能够将 移动Style到任何ResourceDictionary并且它应该仍然有效,您只需将其应用到MenuItemusing内的项目即可ItemContainerStyle
<Window.Resources>
<Style x:Key="MyMenuStyle" TargetType="{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>
</Window.Resources>
<Grid>
<Menu VerticalAlignment="Top">
<MenuItem Header="_FILE" >
<MenuItem Header="_Recent Studies"
ItemsSource="{Binding RecentFiles}"
AlternationCount="{Binding RecentFiles.Count}"
ItemContainerStyle="{StaticResource MyMenuStyle}" />
<Separator/>
<MenuItem Header="E_xit" Height="22" Command="{Binding ExitCommand}" />
</MenuItem>
</Menu>
</Grid>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2908 次 |
| 最近记录: |