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