次の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>
上に何を書いたらいいのかわからない。物事をより複雑にする index プロパティを 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" を予期するプロパティに適用できません。
なぜこれが起こっているのですか、どうすれば解決できますか?
御時間ありがとうございます。
結果!