我有一个ObservableCollection项,其中一个属性是bool。 当我将datagrid的itemsSource设置为ObservableCollection时,它会自动生成带有bool属性的复选框列的列。
我想知道我们如何勾选代码中的复选框,假设我们有标记所有选项?
我尝试使用true更新ObservableCollection记录属性值,但它不帮助更新UI。
请帮忙。
[编辑:下面的代码按照答案中的建议工作] 我的班级如下
public class InvoiceDoc : INotifyPropertyChanged
{
private bool _Selected;
[DisplayName("Selected")]
public bool Selected
{
get { return _Selected; }
set { _Selected = value; this.OnPropertyChanged(); }
}
[DisplayName("Date")]
public DateTime DocDate { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
if (PropertyChanged !=null)
this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
数据网格如下
<DataGrid x:Name="dgInvoices" Margin="32,110,32,59" AutoGeneratingColumn="dgInvoices_AutoGeneratingColumn"/>
设置ItemsSource如下
docs = new ObservableCollection<InvoiceDoc>(); ;
dgInvoices.ItemsSource = docs;
我希望网格在设置集合中的值后自动选中复选框。
答案 0 :(得分:0)
绑定到ObservableCollection只有在添加或删除Item时才会被激活。
您的Collection中的元素必须实现INotifyPropertyChanged,以便UI识别更改
编辑:
假设您的馆藏中有以下物品:
public class MyClass {
public string Name { get; set; }
public bool IsActive { get; set; }
}
现在要将此类修改为以下内容:
public class MyClass : INotifyPropertyChanged{
private string _name;
private bool _isActive;
public string Name
{
get { return this._name; }
set { this._name = value; this.OnPropertyChanged();}
}
public bool IsActive
{
get { return this._isActive; }
set { this._isActive = value;
this.OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged([CallerMemberName] string propertyName = null) {
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
如果有任何错误,请删除CallerMemberNameAttribute并调用this.OnPropertyChanged();与Propertyname。