将属性绑定到itemssource集合的属性

时间:2015-12-01 08:55:51

标签: c# wpf xaml mvvm binding

我有一个数据网格。 商品来源MySourceobservableCollection<myClass>。 课程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>

1 个答案:

答案 0 :(得分:1)

您可以绑定Background RowStyle中的DataGrid媒体资源:

查看:

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