wpf中mvvm模式下DataGrid绑定命令的问题

在一个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里,如果是放在默认页里,就是一运行就会显示的那一页里,正常,但如果是放在别的页里,需要在运行后靠操作者来选择显示的页里,这个命令无法绑定上,不会执行命令,在网上也查了一些资料,但还是没有解决这个问题,请各位高手帮忙解决,多谢

第1个回答  2015-03-21
大概是bingding的DataContex发生了变化,可以用RelativeSource来寻找下,可否共享源码来调试?本回答被网友采纳

WPF 入门教程 DataGrid数据绑定
要显示基本数据网格,只需将DataGrid控件拖放到您的视图中并将其绑定ItemsSource到数据对象集合即可。DataGrid 提供了一项称为AutoGenerateColumns根据数据对象的公共属性自动生成列的功能。它生成以下类型的列:推荐一款好用的WPF MVVM框架开源控件库 Newbeecoder.UI 手动定义列 AutoGenerateColumns 或者,您可以...

WPF MVVM模式如何控制DataGrid的列隐藏和显示
ViewModel定义bool类型属性,实现INotifyPropertyChanged接口,绑定到DataGrid列的Visibility属性和CheckBox的IsChecked属性就好了。希望对你有帮助,还有疑问请追问或是Hi

WPF中想在一个窗口中调用另一个窗口的控件(DataGrid),怎么实现
首先在window2的后台里把datagrid公开出去 public DataGrid WinDataGrid { get { return datagrid; } set { datagrid = value; } } 然后在window1的后台去实例化window2,在调用datagrid即可 window2 window = new window2();DataGrid dg = window.WinDataGrid;...

WPF DataGrid数据源在发生改变时会触发什么事件
WPF中不推荐使用DataGrid的事件去处理 在MVVM模式中,使用数据绑定,使用INotifyPropertyChanged接口,数据源更改时触发消息。ObservableCollection在数据源中的项更改时也能触发消息 如需要项中的某个字段更改触发消息,将数据源的类继承INotifyPropertyChanged接口,使特定字段更改时触发消息。

WPF DataGrid排序后,绑定数据的更新问题。
this.RaisePropertyChanged("GoodsSummaryList");把这一句在你的按键中执行一次 为了做到,把你的按键命令也得写在viewmodel里

wpf 中 DataGrid有没属性 可以显示当前有多少行数
标准的MVVM 仔细看看...我改一下你就理解了 其实 你这个问题的解决办法很简单 就是在你的模糊查询的到结果后 1把结果集的count付值给绑定label.Content属性的那个属性上(我这里就是SelectedCount属性),你的模糊查询在vm里完成,那个属性当然也在vm里... 必须的...2然后调用INotifyPropertyChanged....

C# WPF DataGrid 在删除了数据源中的一行,但是在UI界面用没有删除对应...
不用象jielizao110所说再重新绑定一下。另 ObservableCollection 定义在System.Collections.ObjectModel中,使用它时不要忘记在程序中 加上 using System.Collections.ObjectModel;你如果写WPF架构的程序,建议你学习一下MVVM模式,并了解一下MvvmLight ...

wpf:datagrid删除本行
datagrid的每行(DataGridRow以及DataGridCell的DataContext)都对应一个数据实体对象。Hyperlink的DataContext也应该是这个数据实体。你可以在Hyperlink_Click的事件中把datagrid绑定的数据实体集合删除选中的数据实体(也就是Hyperlink的DataContext)然后再重置datagrid的itemsSource即可。

WPF 入门教程DataGrid基本功能
此外,通过进一步扩展DataTemplate,你可以实现更丰富的行详细信息展示,如使用Grid和Image控件创建更复杂的布局。例如,显示用户图片和信息的面板设计。总的来说,WPF DataGrid是开发中强大的可视化工具,适合多种数据展示场景。推荐尝试开源框架Newbeecoder.UI的MVVM示例,了解更多可能性。

WPF UI开发教程自定义DataGrid样式
首先,让我们先来欣赏一下修改后的DataGrid运行效果:在本次样式修改中,我们主要对DataGridRow行和DataGridCell表格的颜色进行了调整,包括隔行换色、鼠标选中颜色等。以下是具体的样式代码:通过设置AlternationIndex属性,我们可以控制单双数行的背景颜色。同时,当鼠标移动到行上时,也会改变背景颜色。对于...

相似回答