アイテムの ListBox があり、すべての ListBoxItem には、次のPath
ようにオブジェクトの形式でアイコンが含まれています。
<ListBox.ItemTemplate>
<DataTemplate>
<Grid ...>
...
<Path Margin="4" Style="{StaticResource ErrorIconPath}"
Stretch="Uniform" Width="26" Height="26"
RenderTransformOrigin="0.5,0.5" Grid.Column="1" Grid.Row="1"
UseLayoutRounding="False"
HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
パスのスタイルはAppl.xaml
(Application.Resources
セクション) に含まれており、次のとおりです。
<Style x:Key="ErrorIconPath" TargetType="Path">
<Setter Property="Data" Value="F1M874.094,289.369L854.3,254.63C854.028,254.151 853.515,253.856 852.958,253.856 852.403,253.856 851.89,254.151 851.617,254.63L831.824,289.369C831.555,289.84 831.559,290.416 831.835,290.883 832.111,291.348 832.618,291.634 833.165,291.634L872.752,291.634C873.299,291.634 873.805,291.348 874.081,290.883 874.357,290.416 874.361,289.84 874.094,289.369 M855.653,287.189L850.264,287.189 850.264,282.745 855.653,282.745 855.653,287.189z M855.653,279.41L850.264,279.41 850.264,266.077 855.653,266.077 855.653,279.41z" />
</Style>
問題は、ListBox の最初の項目のみがData
期待どおりにプロパティをバインドし、他の項目はまったくバインドしないことです (したがって、それらは空白として表示されますが、のサイズと一致しますPath
)。また、スタイルを他の場所 (つまり、ListBox の外側) で使用すると、最初に発生したインスタンスのみがバインドされます。
奇妙なことに、たとえばインラインFill
ではなくプロパティを定義するStyle
と、問題なく機能し、プロパティと同じ問題が発生しませんPath
。
私の推測では、プリミティブ型ではないことと関係があると思いますがData
、修正は見つかりませんでした。
編集:興味深いことに、プロパティをリソースにData
直接バインドすると機能します。System.String
ただし、スタイルを介してこのプロパティを定義できるようにしたいと考えています。
編集 2:より多くのボタンで使用されるスタイルを介してボタンのコンテンツへのパスを設定するときに、WPF で同じ問題に遭遇しました。パスは 1 つのボタンだけに表示され、他のボタンは空白です。