在 ItemsControl 中,我尝试使用 DataTrigger 有条件地设置自定义 UserControl 的属性,但是,DataTrigger 中的 DataContext 是 UserControl 的 DataContext,而不是列表中的当前项目。
在 XAML 中,Status
下方是 ListOfItems
中项目的属性。如何绑定到当前列表项的 Status
属性?
编辑:在 local:Icon
中,我已经设置了 DataContext,没有设置它确实有效,但我想知道是否也可以这样做。
<ItemsControl Margin="5 0 0 0" ItemsSource="{Binding ListOfItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Style="{StaticResource HorizontalStackPanel}">
<local:Icon Width="18" Height="18">
<local:Icon.Style>
<Style TargetType="local:Icon">
<Style.Triggers>
<!-- DataContext is Icon, but I want current item from ListOfItems -->
<DataTrigger Binding="{Binding Status}" Value="Default">
<Setter Property="Background" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</local:Icon.Style>
</local:Icon>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
我知道 RelativeSource 可用于访问例如父 DataContext,但我不知道如何或是否可以使用它来解决我的问题。