C#WPF双向复选框绑定未更新
堆栈溢出 从我的代码开始: XAMLC#WPF双向复选框绑定未更新,c#,wpf,datagrid,C#,Wpf,Datagrid,堆栈溢出 从我的代码开始: XAML 这也没有解决问题。实现INotifyPropertyChanged,然后让您的属性引发事件以实现这一点 比如: public class MyData : INotifyPropertyChanged { private bool isChecked; public bool IsChecked { get { return isChecked; } set {
这也没有解决问题。实现
INotifyPropertyChanged
,然后让您的属性引发事件以实现这一点
比如:
public class MyData : INotifyPropertyChanged
{
private bool isChecked;
public bool IsChecked
{
get { return isChecked; }
set
{
if (isChecked != value)
{
isChecked = value;
OnPropertyChanged("IsChecked");
}
}
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
在
MyData
类中实现INotifyPropertyChanged
怎么样?这是每个WPF员工都应该知道的最基本的事情。我所要做的就是添加:INotifyPropertyChanged到MyData。我将不得不阅读这篇文章,因为我对WPF和C#基本上还是新手。谢谢!!!:]嗯,你需要用你所有的财产做那些无聊的事情(否则你可能会有类似的问题),但你得到了要点:-)
public partial class MainWindow : Window
{
ObservableCollection<MyData> MyItems = new ObservableCollection<MyData>();
public MainWindow()
{
datGrid.ItemsSource = MyItems;
MyItems.Add(new MyData { IsChecked = false, Username = "apetecca", FirstName = "Anthony", LastName = "Petecca", Email = "apetecca@email.com"});
MyItems.Add(new MyData { IsChecked = true, Username = "jhalls", FirstName = "Jake", LastName = "Halls", Email = "jhalls@email.com" });
}
public class MyData
{
public bool IsChecked { get; set; }
public string Username { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
}
private void headerCheckBox_Checked(object sender, RoutedEventArgs e)
{
foreach (var item in MyItems)
{
item.IsChecked = true;
}
}
public class MyData
{
private bool _isChecked;
public bool IsChecked
{
get { return _isChecked; }
set
{
_isChecked = value;
OnPropertyChanged("IsChecked");
}
}
public string Username { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public event PropertyChangedEventHandler PropertyChanged;
}
public class MyData : INotifyPropertyChanged
{
private bool isChecked;
public bool IsChecked
{
get { return isChecked; }
set
{
if (isChecked != value)
{
isChecked = value;
OnPropertyChanged("IsChecked");
}
}
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}