我想基於使用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