我有一个数据网格。
项目源MySourceobservableCollection<myClass>myClass类具有BackgroundOfRow属性-类型为Brush

我想将RowBackground属性绑定(bind)到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>

最佳答案

您可以将Background属性绑定(bind)到RowStyleDataGrid中:

查看:

<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; }
}

ViewModel:
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 });
   }
}

10-02 02:06
查看更多