可能是一个简单的,但我似乎无法让它工作,这是列表视图和绑定的 XAML;
<ListView
VerticalAlignment="Stretch"
HorizontalAlignment="Stretch"
x:Name="lstTrackers"
ItemsSource="{Binding Path=MainWindowViewModel.TrackerCollection}"
HorizontalContentAlignment="Stretch">
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=LastTransmitted}" Value="True">
<Setter Property="Background" Value="Green"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=LastTransmitted}" Value="False">
<Setter Property="Background" Value="White"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock
Text="{Binding Path=Description}"
x:Name="listTextClick"
MouseLeftButtonUp="listTextClick_MouseLeftButtonUp"
HorizontalAlignment="Stretch"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
以及我试图将其绑定到的属性;
public class TrackerViewModel : ViewModelBase
{
readonly Tracker _tracker;
public TrackerViewModel(Tracker tracker)
{
_tracker = tracker;
}
public bool LastTransmitted
{
get
{
return _tracker.lastTransmitted;
}
set
{
_tracker.lastTransmitted = value;
OnPropertyChanged("LastTransmitted");
}
}
}
然后我只是试图将布尔值设置为true,我认为这会触发样式触发;
_trackerViewModel.LastTransmitted = true;
然而,似乎什么都没有发生。我是否缺少一些简单但必不可少的东西?
注意:我已经尝试将“true”更改为“True”,以防万一。
编辑1:似乎没有通知更改,这很奇怪,因为我确定它是。如果我将触发器更改为;
<Style x:Key="listBoxStyle" TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=LastTransmitted}" Value="True">
<Setter Property="Background" Value="Green"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=LastTransmitted}" Value="False">
<Setter Property="Background" Value="Blue" ></Setter>
</DataTrigger>
</Style.Triggers>
<!--<Setter Property="Background" Value="Red"/>-->
</Style>
然后文本块都是蓝色的,如布尔值设置为真所示。但是,当它设置为 true 并通知属性时,没有任何变化。也许列表没有正确刷新?我确定它与 ObservableCollection 相关联。
编辑2:在那张纸条上,事实证明我正在使用自定义列表;“线程绑定列表”。它可能不会从 OnNotify 更新..所以我将不得不尝试解决这个问题。