在DataTriggers中将DataBinding添加到模型



我有一个ObservableCollection<MyClass>。而MyClass有一个称为IsColored 的性质

我创建了一个ListView,它将为所有具有IsColored属性的行着色为true。

<ListView ItemsSource="{Binding MyClassList}">
    <hControls:ListView.Style>
        <Style TargetType="ListView">
            <Setter Property="Foreground" Value="Blue" />
        </Style>
    </hControls:ListView.Style>
...
</ListView>

为了满足ListView的Colors条件,我应该添加一个DataTrigger

<Style.Triggers>
    <Trigger Property="IsColored" Value="True">
        <Setter Property="Foreground" Value="Blue" />
    </Trigger>
</Style.Triggers>

但问题是IsColored没有被认可。

如何将绑定添加到该属性,以便我可以从DataTrigger访问它?

我不知道为什么@Anatoliy这么快就放弃了,并删除了他的答案,因为他是对的。。。您确实需要使用DataTrigger:

<Style.Triggers>
    <DataTrigger Binding="{Binding IsColored}" Value="True">
        <Setter Property="Foreground" Value="Blue" />
    </DataTrigger>
</Style.Triggers>

你评论说你在尝试这个代码时遇到了这个错误:

无法解析MyNameSpace类型的数据上下文中的属性"IsColored"。MyUserControl

这只是意味着您的Style无法访问ListView中的项目。查看您的代码,似乎您正在尝试为ListViewItem定义Style,但在ListView Style中。相反,您需要使用ListView.ItemContainerStyle属性将Style应用于各个项目。试试这个:

<ListView ItemsSource="{Binding MyClassList}">
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsColored}" Value="True">
                    <Setter Property="Foreground" Value="Blue" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ListView.ItemContainerStyle>    
    ...    
</ListView>

在第一种情况下,您使用常规Style.TriggerDataTrigger使用如下:

<DataTrigger Bindind="{Binding Path=IsColored}" Value="True">
    <Setter Property="Foreground" Value="Blue" />
</DataTrigger>

关于此错误:

无法解析MyNameSpace类型的数据上下文中的属性"IsColored"。MyUserControl

它告诉你没有正确设置DataContext

相关内容

  • 没有找到相关文章

最新更新