プロパティを変更する方法IsCheckedプロパティに応じて、チェックボックスで現在選択されている要素のアイコンを埋めますか?WPFでdatatemplateでトリガーを使用する方法
マイリソースディクショナリ:
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!-- (...) -->
</ResourceDictionary.MergedDictionaries>
<DataTemplate x:Key="FooTemplate">
<Icons:ExIcon Fill="Red"
Width="12"
Height="Auto">
<!--
<Icons:ExIcon.Triggers>
<DataTrigger Binding="{Binding RelativeSource={???}}, Path=???}" Maybe here?
Value="???"/>
</Icons:ExIcon.Triggers>
-->
</Icons:ExIcon>
</DataTemplate>
<!-- (...) -->
<styles:IconSelector x:Key="IconSelector"
FooTemplate="{StaticResource FooTemplate}"
FooTemplateSSecond="{StaticResource FooTemaplteSecond}"/>
そして、リストボックス:
<ListBox ItemsSource="{Binding DataSources}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<!-- (...) -->
<CheckBox IsChecked="{Binding IsSelected, Mode=TwoWay}">
<CheckBox.Template>
<!-- (...) -->
<ContentControl Name="Icon"
Content="{Binding}"
ContentTemplateSelector="{StaticResource IconSelector}"
HorizontalAlignment="Right"
Grid.Column="1"/>
<!-- (...) -->
</CheckBox.Template>
</CheckBox>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
が、それは可能ですか?
不幸にも、これで問題は解決しません。リストの要素の種類によって、異なるテンプレートが適用されます。テンプレートはResourceDictionaryで定義する必要があります。 例:リストには従業員が表示されます。従業員がマネージャーの場合、「A」アイコンが表示されます。従業員がディレクターの場合、「B」アイコン...と表示されます。 アイテムがチェックされている場合、ContentControlの子の色を変更したい場合があります(時には "A"、時には "B")。 – WymyslonyNick
アイコンはContentControlのコンテンツであることが重要です。 – WymyslonyNick
異なるViewModel ''に対して、異なるDataTemplatesを使用できます。次に、ContentTemplateSelectorは必要ありません。 DatatemplateはItemTemplateとして自動的に適用されます。 http://stackoverflow.com/questions/19864891/wpf-mvvm-why-use-contentcontrol-datatemplate-views-rather-than-straight-xaml-wも参照してください。とにかく私はContentControlに例を更新します –
Mat