C# Datagrid MVVM WPF中的复选框

C# Datagrid MVVM WPF中的复选框,c#,wpf,mvvm,C#,Wpf,Mvvm,View ConfigRole有两列,分别为Name和IsEnabled(复选框),每行有编辑按钮 配置角色: **如果ConfigRole视图中的某一行的复选框为TRUE,则当我单击Edit按钮时,我会得到新的视图按钮列表,其中包含两列名称按钮和IsEnabled(复选框)…并且我会为每个IsEnabled修改TRUE或FALSe **我的目标是:当IsEnabled ConfigRole为FALSE时,我希望所有IsEnabled按钮列表都默认为FALSE 按钮列表: 这是我在按钮列表模

View ConfigRole有两列,分别为Name和IsEnabled(复选框),每行有编辑按钮

配置角色:

**如果ConfigRole视图中的某一行的复选框为TRUE,则当我单击Edit按钮时,我会得到新的视图按钮列表,其中包含两列名称按钮和IsEnabled(复选框)…并且我会为每个IsEnabled修改TRUE或FALSe

**我的目标是:当IsEnabled ConfigRole为FALSE时,我希望所有IsEnabled按钮列表都默认为FALSE

按钮列表:

这是我在按钮列表模型中的试用代码:

 // get all of ButtonsList 
 public ObservableCollection<ButtonRoleMapClass> ButtonList
    {
        get { return _buttonList; }
        set
        {
            _buttonList = value;
            OnPropertyChanged("ButtonList");
        }
    }

    //viewRoleButton: the Name of selected row in ConfigRole
     public ButtonListViewModel(ViewRoleMapClass viewRoleButton)
    {               

        //If IsEnabled for row in ConfigRole is FALSE
        if (viewRoleButton.IsEnabled==false)
        {
            ObservableCollection<ButtonRoleMapClass> butsList = new ObservableCollection<ButtonRoleMapClass>();
            foreach (ButtonRoleMapClass button in _buttonList)
            {
                button.IsEnabled = false;
                butsList.Add(button);
            }
            _buttonList = butsList;                
        }   
//获取所有按钮列表
公共可观察收集按钮列表
{
获取{return\u buttonList;}
设置
{
_按钮列表=值;
OnPropertyChanged(“按钮列表”);
}
}
//viewRoleButton:ConfigRole中选定行的名称
公共按钮ListViewModel(ViewRoleMapClass viewRoleButton)
{               
//如果ConfigRole中的行的IsEnabled为FALSE
if(viewRoleButton.IsEnabled==false)
{
ObservableCollection butsList=新的ObservableCollection();
foreach(按钮列表中的按钮RoleMapClass按钮)
{
button.IsEnabled=false;
butsList.Add(按钮);
}
_按钮列表=按钮列表;
}   
我想在Datagrid中获取查看按钮列表的所有复选框默认值为FALSE

但我的代码有以下错误:


如何修复它?

通过添加检查
\u buttonList
是否为
null
的if语句,确保已初始化
\u buttonList
。如果清除异常,则知道
observeCollection
尚未初始化

您可能还希望将ButtonList属性设置为新集合:

public ButtonListViewModel(ViewRoleMapClass viewRoleButton)
{
    //If IsEnabled for row in ConfigRole is FALSE
    if (viewRoleButton.IsEnabled == false)
    {
        ObservableCollection<ButtonRoleMapClass> butsList = new ObservableCollection<ButtonRoleMapClass>();
        if (_buttonList != null)
        {
            foreach (ButtonRoleMapClass button in _buttonList)
            {
                button.IsEnabled = false;
                butsList.Add(button);
            }
        }
        ButtonList = butsList;
    }
}
public按钮ListViewModel(ViewRoleMapClass viewRoleButton)
{
//如果ConfigRole中的行的IsEnabled为FALSE
if(viewRoleButton.IsEnabled==false)
{
ObservableCollection butsList=新的ObservableCollection();
如果(_buttonList!=null)
{
foreach(按钮列表中的按钮RoleMapClass按钮)
{
button.IsEnabled=false;
butsList.Add(按钮);
}
}
按钮列表=按钮列表;
}
}

通过添加检查
\u buttonList
是否为
null
的if语句,确保已初始化
\u buttonList
。如果清除异常,则知道
ObservableCollection
尚未初始化

您可能还希望将ButtonList属性设置为新集合:

public ButtonListViewModel(ViewRoleMapClass viewRoleButton)
{
    //If IsEnabled for row in ConfigRole is FALSE
    if (viewRoleButton.IsEnabled == false)
    {
        ObservableCollection<ButtonRoleMapClass> butsList = new ObservableCollection<ButtonRoleMapClass>();
        if (_buttonList != null)
        {
            foreach (ButtonRoleMapClass button in _buttonList)
            {
                button.IsEnabled = false;
                butsList.Add(button);
            }
        }
        ButtonList = butsList;
    }
}
public按钮ListViewModel(ViewRoleMapClass viewRoleButton)
{
//如果ConfigRole中的行的IsEnabled为FALSE
if(viewRoleButton.IsEnabled==false)
{
ObservableCollection butsList=新的ObservableCollection();
如果(_buttonList!=null)
{
foreach(按钮列表中的按钮RoleMapClass按钮)
{
button.IsEnabled=false;
butsList.Add(按钮);
}
}
按钮列表=按钮列表;
}
}

错误是什么?你能同时给出视图的代码吗?直接使用ButtonList=butsList。那么你的属性更改应该可以工作。不,_ButtonList是值;所以_ButtonList=butsList;正确吗?你在任何地方设置了_ButtonList的值吗?如果是,它的初始值为空。错误是什么?你能给出视图的代码吗?我们e ButtonList=butsList direct。那么您的属性更改应该会起作用。不,_ButtonList是值;所以_ButtonList=butsList;正确吗?您是否在任何地方设置了_ButtonList的值?如果是,它的初始值是null。当我验证(_ButtonList!=null)时,它现在起作用了。非常感谢:)现在,当我验证(_ButtonList!=null)非常感谢:)