我想基于使用MVVM列表框项触发颜色变化
<Border Grid.Row="1" Width="300" Margin="0,0,20,0" BorderThickness="1,2,1,1" CornerRadius="5" BorderBrush="#FF999393" Background="#FFE9EDF1" >
<ListBox ItemsSource="{Binding LogMessageList, UpdateSourceTrigger=PropertyChanged}" Background="{x:Null}" Margin="3" BorderBrush="{x:Null}" FontSize="13.333" >
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Foreground" Value="#FF403E3E" />
<Style.Triggers>
<DataTrigger Binding="{Binding FatalError, UpdateSourceTrigger=PropertyChanged}" Value="Fatal">
<Setter Property="Foreground" Value="Firebrick" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
我正确地设置属性的变化,但似乎没有任何一个触发改变项目的颜色列表框更改。
感谢
编辑: 仍停留。尝试
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Foreground" Value="#FF403E3E" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}},Path=DataContext.FatalError, UpdateSourceTrigger=PropertyChanged}" Value="Fatal">
<Setter Property="Foreground" Value="Firebrick" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
在输出窗口中是否有任何绑定失败记录?在用于LogMessageList集合的模型中定义了“FatalError”属性?如果是的话,你能否验证由设置者通知'PropertyChanged'事件? – user1672994
好的电话。看起来像我正在使用目标类型listboxitem,然后绑定正在查看列表中的项目,而不是viewmodel上的“全局”属性。现在搞清楚了。 – scottsanpedro
您可以使用RelativeSource来绑定您viewmodel的全局属性。 – user1672994