是的,datatrigger在一个样式中。现在,这个问题在我们后面,我很想知道为什么下面的代码不起作用。 我应该看到数据网格的蓝色背景,但样式被忽略。我究竟做错了什么?注意我已经命名Window元素“root”。这个DataTrigger为什么不起作用?
<Window x:Class="DataGridTriggerTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" x:Name="root">
<Grid>
<DataGrid ItemsSource="{Binding SomeData}" >
<DataGrid.Style>
<Style TargetType="DataGrid">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=root, Path=SomeCondition}" Value="true">
<Setter Property="Background" Value="Red"></Setter>
<Setter Property="RowBackground" Value="Red"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=root, Path=SomeCondtion}" Value="false">
<Setter Property="Background" Value="Blue"></Setter>
<Setter Property="RowBackground" Value="Blue"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.Style>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding}" Header="Data"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
这里是代码:
public partial class MainWindow : Window
{
public bool SomeCondition { get; set; }
public List<string> SomeData { get; set; }
public MainWindow()
{
InitializeComponent();
DataContext = this;
SomeData = new List<string> { "hello", "world" };
}
}
感谢您的回答。是的你是正确的我需要实现INotifyPropertyChanged和我的应用程序。但我的问题是“为什么风格被忽略?”不是“为什么条件改变时颜色不变”。正如你指出的,默认值是蓝色的,当属性为真时会改变。但是,这不是我所看到的。我看到灰色,表明风格有问题。此外,网格能够绑定到列表。目前,我不想更新数据更改的时间。 – Sam
问题 - 和往常一样 - 是我。我有一个typeo SomeCondtion是错误的。 mdm20感谢你至少给我一个正确的方向。如果魔术字拼写正确,我发布的代码将会有效。 – Sam
我没有注意到这个错字:) – mdm20