问题描述
XAML 代码:
<DataGrid ItemsSource="{Binding EmailAddressList,Mode=TwoWay}" AutoGenerateColumns="False"
Grid.ColumnSpan="2" Grid.RowSpan="3" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTemplateColumn Width="220">
<DataGridTemplateColumn.Header >
<CheckBox Content="Select_All" IsEnabled="True" IsChecked="{Binding
IsAllChecked,Mode=TwoWay}" cal:Message.Attach="[Event Checked]=
[Action Check_All]; [Event Unchecked]=[Action UnCheck_All]"/>
</DataGridTemplateColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="isCheckBoxChecked" Margin="1" IsChecked="{Binding
isCheckBoxChecked,Mode=TwoWay}" HorizontalAlignment="Left"
cal:Message.Attach="[Event Checked]=[Action RCheck($dataContext)];
[Event Unchecked]=[Action runcheck($dataContext)]"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!--<DataGridCheckBoxColumn Header="CheckAll" Width="220"/>-->
<DataGridTextColumn Header="Email" Width="220" Binding="{Binding
recipientEmail}"/>
<DataGridTextColumn Header="Name" Width="220" Binding="{Binding EmployeeName}"/>
<DataGridTextColumn Header="Company" Width="220" Binding="{Binding
CompanyName}"/>
</DataGrid.Columns>
</DataGrid>
视图模型:
public BindableCollection<RecipientSectionModel> EmailAddressList
{
get { return _EmailAddressList; }
set
{
_EmailAddressList = value;
NotifyOfPropertyChange(() => EmailAddressList);
}
}
public bool IsAllChecked
{
get { return _IsAllChecked; }
set
{
_IsAllChecked = value;
NotifyOfPropertyChange(()=>IsAllChecked);
}
}
public void Check_All()
{
if (!IsAllChecked)
{
foreach (RecipientSectionModel m in EmailAddressList)
{
m.isCheckBoxChecked = true;
}
EmailAddressList.Refresh();
IsAllChecked = true;
}
}
public void UnCheck_All()
{
if (IsAllChecked)
{
foreach (RecipientSectionModel m in EmailAddressList)
{
m.isCheckBoxChecked = false;
}
EmailAddressList.Refresh();
IsAllChecked = false;
}
}
public void RCheck(RecipientSectionModel model)
{
EmailAddressList.Where(x => x.EmployeeName ==
model.EmployeeName).First().isCheckBoxChecked =
true;
AllChecked();
}
public void runcheck(RecipientSectionModel model)
{
if (IsAllChecked)
{
EmailAddressList.Where(x => x.EmployeeName ==
model.EmployeeName).FirstOrDefault().isCheckBoxChecked = false;
IsAllChecked = false;
}
else
{
EmailAddressList.Where(x => x.EmployeeName ==
model.EmployeeName).FirstOrDefault().isCheckBoxChecked = false;
}
EmailAddressList.Refresh();
}
public void AllChecked()
{
if (EmailAddressList.All(x => x.isCheckBoxChecked == true))
{
IsAllChecked = true;
EmailAddressList.Refresh();
}
else
{
IsAllChecked = false;
EmailAddressList.Refresh();
}
}
我已经声明了一个复选框 Select_All,它绑定到 viewmodel 中的 IsAllChecked 布尔字段。 通过 viewmodel IsAllChecked 属性更新时,Select_All 复选框不会被选中/取消选中。 一切正常,当我选择 Select_All 复选框或单个复选框时,事件会被触发。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)