从 UserControl 的 DataContext

时间:2021-08-01 16:19:11

标签: wpf xaml data-binding datatrigger

在 ItemsControl 中,我尝试使用 DataTrigger 有条件地设置自定义 UserControl 的属性,但是,DataTrigger 中的 DataContext 是 UserControl 的 DataContext,而不是列表中的当前项目。

在 XAML 中,Status 下方是 ListOfItems 中项目的属性。如何绑定到当前列表项的 Status 属性?

编辑:在 local:Icon 中,我已经设置了 DataContext,没有设置它确实有效,但我想知道是否也可以这样做。

Wrong Data Context

<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,但我不知道如何或是否可以使用它来解决我的问题。

0 个答案:

没有答案