是的,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