У меня есть класс Person
с 3 свойствами, который реализует INotifyPropertyChanged
public class Person:INotifyPropertyChanged
{
private string name;
public int ID { get; set; }
public string Name { get { return name; } set { name = value; OnPropertyChanged("Name"); } }
public int Age { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyname)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyname));
}
}
}
Я заполняю ObservableCollection
этого класса, используя SqlDataReader
:
private void ReadFromDB()
{
using (SqlConnection con = new SqlConnection(ConnectionString))
{
// Reading from SQL server...
while (reader.Read())
{
Person pr = new Person();
pr.ID = reader.GetInt32(0);
pr.Name = reader.GetString(1);
pr.Age = reader.GetInt32(2);
people.Add(pr);
}
con.Close();
}
}
И загрузка данных на DataGrid
:
public Window1()
{
InitializeComponent();
ReadFromDB();
dataGrid1.ItemsSource = people;
}
И, наконец, у меня есть настройка DataTriggers
для изменения DataGridRow
при появлении имени:
<DataGrid AutoGenerateColumns="True" Height="253" HorizontalAlignment="Left" Margin="6,6,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="740" ItemsSource="{Binding}">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Name}" Value="SomePerson">
<Setter Property="Background" Value="Green"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
</DataGrid>
Проблема в том, что DataTriggers
не запускается автоматически при открытии окна. Если я поменяю имя вручную на самом DataGrid
, DataTriggers
сработает и RowStyle
изменится правильно. Как я могу DataTriggers
реагировать на значения в моей коллекции? Спасибо