C# 如何将两件事绑定到checkbox的IsChecked属性?

C# 如何将两件事绑定到checkbox的IsChecked属性?,c#,.net,wpf,checkbox,datagrid,C#,.net,Wpf,Checkbox,Datagrid,好的,我有一个datagrid,在DataGridTemplateColumn中有一个复选框,因为我想进行一次单击检查。我在顶部还有一个“全选”复选框。(我禁用了标题,因为我想制作一个自定义标题)。我的datagrid是以编程方式填充的。我使用的是mahApps nuget包(如果这意味着什么的话) 我要做的是将“全选”状态绑定到我填充的复选框上的IsChecked属性,但也可以单击该行以选中复选框。但要做到这一点,我需要添加:IsChecked=“{Binding RelativeSource

好的,我有一个datagrid,在DataGridTemplateColumn中有一个复选框,因为我想进行一次单击检查。我在顶部还有一个“全选”复选框。(我禁用了标题,因为我想制作一个自定义标题)。我的datagrid是以编程方式填充的。我使用的是mahApps nuget包(如果这意味着什么的话)

我要做的是将“全选”状态绑定到我填充的复选框上的IsChecked属性,但也可以单击该行以选中复选框。但要做到这一点,我需要添加:
IsChecked=“{Binding RelativeSource={RelativeSource AncestorType=DataGridRow},Path=IsSelected,Mode=OneWay}”

我两个都有,而且都能用,但我似乎一次只能用一个。我怎样才能同时做这两件事呢?如果你需要更多信息,请告诉我

编辑:我还需要多选

这是psuedo代码:

要使每行复选框都可以独立单击,行的ViewModel应具有bool IsChecked get set属性。对于顶级“全选”复选框-您需要顶级bool吗?SelectAll get set属性-getter类似于--

让我们说绑定到GridView的集合是

List<RowViewModel>RowViewModelCollection;
您的顶级SelectAll应该如下所示:

public bool? SelectAll
{
    get
    {
        if(RowViewModelCollection.All(r=>r.IsSelected == true))
            return true;
        else if(RowViewModelCollection.All(r=>r.IsSelected == false))
            return false;
        else
            return null;
    }
    set
    {
       foreach(var row in RowViewModelCollection)
       {
          row.IsSelected = value;
       }

       // Notify Property Changed for This property
    }
}
public bool? SelectAll
{
    get
    {
        if(RowViewModelCollection.All(r=>r.IsSelected == true))
            return true;
        else if(RowViewModelCollection.All(r=>r.IsSelected == false))
            return false;
        else
            return null;
    }
    set
    {
       foreach(var row in RowViewModelCollection)
       {
          row.IsSelected = value;
       }

       // Notify Property Changed for This property
    }
}