将属性绑定到项源集合的属性

本文关键字:属性 集合 绑定 | 更新日期: 2023-09-27 18:25:07

我有一个数据网格。项目源CCD_ 1是CCD_。类myClass具有属性BackgroundOfRow,其类型为Brush

我想将RowBackground属性绑定到xaml中的此属性。我该怎么做?

我的xaml现在是:

<DataGrid AutoGenerateColumns="False" 
          ItemSource="{Binding Source={StaticResource myViewModel}, Path=MySource}">
    <DataGrid.Columns>
        <DataGridTextColumn Header="First Name" 
                            Binding="{Binding Path=FirstName}" 
                            FontFamily="Arial" 
                            FontStyle="Italic" />
        <DataGridTextColumn Header="Last Name" 
                            Binding="{Binding Path=LastName}"
                            FontFamily="Arial" 
                            FontWeight="Bold" />
    </DataGrid.Columns>
</DataGrid>

将属性绑定到项源集合的属性

您可以在DataGrid:的RowStyle中绑定Background属性

视图:

<DataGrid ItemsSource="{Binding EmployeeColl}>
   <DataGrid.RowStyle>
      <Style TargetType="DataGridRow">
        <Setter Property="Background" Value="{Binding BackgroundOfRow}"/>
      </Style>
   </DataGrid.RowStyle>
</DataGrid>

型号:

public class Employee
{
    public int ID { get; set; }
    public int Name { get; set; }
    public int Surname { get; set; }
    public Brush BackgroundOfRow { get; set; }
}

视图模型:

private ObservableCollection<Employee> employeeColl;
public ObservableCollection<Employee> EmployeeColl
{
   get { return employeeColl; }
   set
     {
       employeeColl = value;
       OnPropertyChanged("EmployeeColl");
     }
}
private void PopulateDataGrid()
{
   employeeColl = new ObservableCollection<Employee>();
   for (int i = 0; i < 100; i++)
   {
     if(i%2==0)
        employeeColl.Add(new Employee() { ID = i, BackgroundOfRow = Brushes.CadetBlue});
     else
        employeeColl.Add(new Employee() { ID = i, BackgroundOfRow = Brushes.Green });
   }
}