wpf mvvm datagrid DataGridTemplateColumn的绑定无效的可能原因之一!
来源:互联网 发布:李孝利 长相 知乎 编辑:程序博客网 时间:2024/05/22 09:39
昨天在mvvm wpf的开发中遇到一个问题,绑定不起作用,编辑阶段没问题也没有提示找不到对应的绑定,但是在运行之后却不起作用,查了很多资料,说法不一,有些是要删除datagrid的一行,直接绑定delete即可,但是我要绑定的是viewmodel的command,最终解决问题了,特分享如下(已解决):
view:
<DataGrid ItemsSource="{Binding TodoList}" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserResizeRows="False" CanUserSortColumns="False" IsReadOnly="True" SelectedItem="{Binding SelectedItem}"> <DataGrid.Columns> <DataGridTextColumn Header="Title" Binding="{Binding Title}"> </DataGridTextColumn> <DataGridTextColumn Header="Text" Binding="{Binding Text}"> </DataGridTextColumn> <DataGridTextColumn Header="InsertDateTime" Binding="{Binding InsertDateTime}"> </DataGridTextColumn> <DataGridTextColumn Header="EstimateDateTime" Binding="{Binding EstimateDateTime}"> </DataGridTextColumn> <DataGridTemplateColumn Header="Delete"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Content="Delete" Command="{Binding DeleteCommand}"> </Button> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid>
其中
DataGridTemplateColumn的button的command绑定无效,不起作用,
viewmodel:
private ICommand _deleteCommand; public ICommand DeleteCommand { get { return _deleteCommand; } set { _deleteCommand = value; RaisePropertyChanged(); } } public TodoViewModel() { FreshCommand = new RelayCommand(DoFreshCommand, () => true); DeleteCommand = new RelayCommand(DoDeleteCommand, () => true); DoneCommand = new RelayCommand(DoDoneCommand, () => true); } private void DoDeleteCommand() { if (SelectedItem == null) return; MongoDbProvide.Delete<TodoInfos>(p => p._id == SelectedItem._id); TodoList.Remove(SelectedItem); }
修改view如下解决:
<DataGridTemplateColumn Header="Delete"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <Button Content="Delete" Command="{Binding ElementName=TodoViewTitle, Path=DataContext.DeleteCommand}"> </Button> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn>
TodoViewTitle 为这个view的名称
总结:因datagrid已经指定了
ItemsSource="{Binding TodoList}"
所以内部的列的绑定会默认去找这个
ItemsSource的属性,如果要绑定一个独立的dp,必须要在绑定时指定element和path。
还有其他的列表控件listbox等也是一样,在编辑阶段时,通过view的绑定可以直接找到command,但是是不起作用的,要指定绑定的element和path.
阅读全文
0 0
- wpf mvvm datagrid DataGridTemplateColumn的绑定无效的可能原因之一!
- WPF中 DataGrid中DataGridTemplateColumn打开Window的问题
- WPF的MVVM DataGrid用法
- SL - DataGrid - DataGridTemplateColumn的使用
- 造成datagrid二次请求的可能原因之一
- WPF MVVM DataGrid SelectedItem binding 无效
- WPF之MVVM中DataGrid中嵌入Combox,改变Combox可回传至绑定的实体
- wpf的datagrid绑定数据
- WPF--MVVM之DataGrid数据源绑定
- MVVM WPF 使用 datagrid 绑定 comboBox
- MVVM-Light模式,在dataGrid的模板下,绑定事件不触发的原因已经服务端排序的实现
- jQuery.validator验证无效的可能原因
- htaccess无效的可能原因有哪些?
- jquery ajax无效的一个可能原因
- angularjs ng-click无效的可能原因
- LayoutParams设置无效可能的原因
- Mvvm绑定datagrid或listview的selectItems的方法
- WPF MVVM绑定DateGrid的列的显隐性解决方案
- Springboot
- Linux的配置文件为啥放在/etc?
- zabbix_server安装与配置
- 润乾V5 报表集成项目后工具栏不显示
- Java的转义字符
- wpf mvvm datagrid DataGridTemplateColumn的绑定无效的可能原因之一!
- 算法1.1 下压(LIFO)栈(能动态调整数组大小的实现)
- 知乎大神解释数据库三范式
- 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号
- 配置Apache的虚拟站点
- SQLite3的基本使用
- centos 安装LAMP
- JVM详细理解
- pycharm加入import路径