我有以下 XAML
<MenuItem Header="_Recent Studies"
Height="22"
ItemsSource="{Binding RecentFiles}">
<MenuItem.Resources>
<Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource {x:Type MenuItem}}">
<Setter Property="Header" Value="{Binding FullFileName}"/>
</Style>
</MenuItem.Resources>
</MenuItem>
其中显示了我最近的文件,例如
但是,我想像MenuItem
VS2012 一样在文件名旁边显示项目编号。
- 文件名A.f
- 文件名B.x
- 文件名C.j
等等。为此,我决定使用转换器,如果我只是得到没有文件名的数字,我可以这样做。但我想将它与多重绑定结合起来,这样我就可以写出类似的东西
<MultiBinding StringFormat="{}{0}. {1}">
<Binding Path="??"/>
<Binding Path="FullFileName"/>
</MultiBinding>
不知道上面写什么。如何在我的文件名前面加上文件在列表中的编号而不向我的 s 添加索引属性,FullFileName
这会使事情变得更复杂?
谢谢你的时间。
编辑。这就是我在代码中使用以下答案的方式
<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}}"
Converter="{StaticResource IntPlusNConverter}"/>
<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>
这行得通!但是,我的 FILEMenuItem
块的所有 XAML 都被突出显示,并且我得到一个编译时错误(代码运行并且可以工作!),说
“System.Windows.StaticResourceExtension”类型的对象不能应用于需要“System.Windows.Style”类型的属性。
为什么会发生这种情况,我该如何解决?
谢谢你的时间。
结果!