如何在属性上调用样式选择器更改行
本文关键字:选择器 样式 调用 属性 | 更新日期: 2023-09-27 17:55:58
我有带有数据网格的RowStyleSelector。它在加载窗口时正确调用。当我调用属性更改时,行的更改不会被调用。
<DataGrid Grid.Row="2" ColumnWidth="*" ItemsSource="{Binding TraceItemCollectionViewSource , Mode=TwoWay , UpdateSourceTrigger=PropertyChanged}" EnableRowVirtualization="false" RowStyleSelector="{StaticResource TraceRowStyleSelector}" IsReadOnly="True" Name="TraceDataGrid" Margin="5,5,5,5" Padding="5,5,5,5" AutoGenerateColumns="False">
这是我的模型:
public class TraceDataItem : ObservableObject
{
private string _newReelId;
public string NewReelId
{
get { return _newReelId; }
set
{
if (value != _newReelId)
{
_newReelId = value;
RaisePropertyChanged("NewReelId");
}
}
}
}
当PropertyChanged("NewReelId")
被调用时,我如何使RowStyleSelector
被调用.
谢谢。
StyleSelector
不侦听PropertyChange
通知。但是,您可以改用基于布尔属性的DataTrigger
:
bool _reelIdChanged;
public bool ReelIdChanged
{
get { return _reelIdChanged; }
set
{
_reelIdChanged = value;
RaisePropertyChanged("ReelIdChanged");
}
}
private string _newReelId;
public string NewReelId
{
get { return _newReelId; }
set
{
if (value != _newReelId)
{
_newReelId = value;
ReelIdChanged = true;
RaisePropertyChanged("NewReelId");
}
else
ReelIdChanged = false;
}
}
XAML:
<Window.Resources>
<Style TargetType="DataGridRow" x:Key="TraceRowStyle">
<Setter Property="Background" Value="{DynamicResource DataBackground}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=ReelIdChanged }" Value="True">
<Setter Property="Background" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
。
<DataGrid Grid.Row="0"
ColumnWidth="*"
ItemsSource="{Binding TraceItemCollectionViewSource , Mode=TwoWay , UpdateSourceTrigger=PropertyChanged}"
EnableRowVirtualization="false"
RowStyle="{StaticResource TraceRowStyle}"
IsReadOnly="True"
Name="TraceDataGrid"
Margin="5,5,5,5"
Padding="5,5,5,5"
AutoGenerateColumns="False"/>