私の XAML セットアップは少し複雑なコードです。
<UserControl.Resources>
<local:SuperCoolObject x:Key="firstObject"/>
<local:TotallyHotObject x:Key="secondObject"/>
</UserControl.Resources>
<Grid>
<ItemsControl ItemsSource="{Binding Path=MyItems, Source={StaticResource firstObject}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<DataTemplate.Resources>
<lol:MyConverter x:Key="myConverter" Equals="{Binding Path=SelectedItem, Source={StaticResource secondObject}}" />
<Style x:Key="On" TargetType="local:ThemedImage">
<Setter Property="Visibility" Value="Hidden"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Converter={StaticResource myConverter}}" Value="True">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataTemplate.Resources>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
(実際の DataTemplate は省略しました)
ItemsControl
がItemsSource
にバインドされfirstObject
、myConverter
にバインドされることに注目してくださいsecondObject
。私がする必要があるのは、バインディング ( ) プロパティが変更さItemsSource
れたときにバインディングを更新することです。myConverter
secondObject.SelectedItem
適切なプロパティはすべてバインド プロパティとして設定されていますがItemsSource
、XAML で何らかの方法または強制的に更新する必要があります。