wpf中mvvm模式下DataGrid绑定命令的问题
在一个DataGrid里,设置一个选择列,全由checkBox组成,列头上也设置一个ChecBox,如果选择列头上的那个CheckBox,所有行的那个CheckBox也就...
在一个DataGrid里,设置一个选择列,全由checkBox组成,列头上也设置一个ChecBox,如果选择列头上的那个CheckBox,所有行的那个CheckBox也就会跟着被选中,反之亦然。代码:
<DataGridTemplateColumn DataGridColumn.Width="34" DataGridColumn.IsReadOnly="True">
<DataGridColumn.Header>
<CheckBox HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{Binding Path=DataContext.IsLYAllSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGrid}}}" Command="{Binding Path=DataContext.LYSelectAllCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGrid}}}"/>
</DataGridColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{Binding Path=IsSelected, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
在正常情况下,该功能呢是可以正常实现的。但是现在出现了一个问题,如果这个DataGrid是放在一个TabControl里,如果是放在默认页里,就是一运行就会显示的那一页里,正常,但如果是放在别的页里,需要在运行后靠操作者来选择显示的页里,这个命令无法绑定上,不会执行命令,在网上也查了一些资料,但还是没有解决这个问题,请各位高手帮忙解决,多谢 展开
<DataGridTemplateColumn DataGridColumn.Width="34" DataGridColumn.IsReadOnly="True">
<DataGridColumn.Header>
<CheckBox HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{Binding Path=DataContext.IsLYAllSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGrid}}}" Command="{Binding Path=DataContext.LYSelectAllCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGrid}}}"/>
</DataGridColumn.Header>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox HorizontalAlignment="Center" VerticalAlignment="Center" IsChecked="{Binding Path=IsSelected, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
在正常情况下,该功能呢是可以正常实现的。但是现在出现了一个问题,如果这个DataGrid是放在一个TabControl里,如果是放在默认页里,就是一运行就会显示的那一页里,正常,但如果是放在别的页里,需要在运行后靠操作者来选择显示的页里,这个命令无法绑定上,不会执行命令,在网上也查了一些资料,但还是没有解决这个问题,请各位高手帮忙解决,多谢 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
若以下回答无法解决问题,邀请你更新回答
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询