在数据网格 wpf 中调用选定的 checbox 方法
本文关键字:checbox 方法 调用 数据 数据网 网格 wpf | 更新日期: 2023-09-27 18:32:41
我有一个数据网格,项目源中的一个项目是布尔变量。
数据网格将布尔值转换为复选框。
我想知道如何添加事件复选框,单击数据网格内的复选框?
这是我的代码:
public class FilterMcode
{
private bool cb;
public bool Cb
{
get { return cb; }
set { cb = value; }
}
private string mcode;
public string Mcode
{
get { return mcode; }
set { mcode = value; }
}
private string structureName;
public string StructureName
{
get { return structureName; }
set { structureName = value; }
}
public FilterMcode()
{
cb = true;
structureName = "";
mcode = "";
}
}
public class Main ()
{
private List<FilterMcode> _qf;
update void updateDataGrid()
{
DataGridCommands.ItemsSource = _qf;
DataGridCommands.Items.Refresh();
// calling check box click????
}
}
tru 使用 INotifyPropertyChanged,则每次选中该复选框时,CB 属性都会更新。
诸如此类:
/// <summary>
/// implements the INotifyPropertyChanged (.net 4.5)
/// </summary>
public class BaseObservableObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
var handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
protected virtual void OnPropertyChanged<T>(Expression<Func<T>> raiser)
{
var propName = ((MemberExpression)raiser.Body).Member.Name;
OnPropertyChanged(propName);
}
protected bool Set<T>(ref T field, T value, [CallerMemberName] string name = null)
{
if (!EqualityComparer<T>.Default.Equals(field, value))
{
field = value;
OnPropertyChanged(name);
return true;
}
return false;
}
}
public class FilterMcode:BaseObservableObject
{
private bool cb;
public bool Cb
{
get { return cb; }
set
{
cb = value;
OnPropertyChanged();
}
}
private string mcode;
public string Mcode
{
get { return mcode; }
set
{
mcode = value;
OnPropertyChanged();
}
}
private string structureName;
public string StructureName
{
get { return structureName; }
set
{
structureName = value;
OnPropertyChanged();
}
}
public FilterMcode()
{
cb = true;
structureName = "";
mcode = "";
}
}
然后以另一种方式更改您的主类
public class Main
{
private List<FilterMcode> _qf;
public void updateDataGrid()
{
_qf.ForEach(mcode => mcode.PropertyChanged += McodeOnPropertyChanged);
DataGridCommands.ItemsSource = _qf;
DataGridCommands.Items.Refresh();
// calling check box click????
}
private void McodeOnPropertyChanged(object sender, PropertyChangedEventArgs args)
{
if(args.PropertyName != "Cb" ) return;
//Add your logic here
}
}
这是获得您想要的东西的简单方法。有一些向下:
您必须取消订阅该事件。
这不是使用 wpf 的 MVVM 方式。
问候。