zoukankan      html  css  js  c++  java
  • wpf mvvm datagrid DataGridTemplateColumn的绑定无效的可能原因之一!

    昨天在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.
  • 相关阅读:
    kafka学习
    centos/Fedora/RHEL 安全设置
    cordon、drain、delete node区别
    HARBOR 仓库 API功能接口
    gcr 镜像无法下载问题
    linux系统 重启盘符错乱问题
    Kafka史上最详细原理总结
    redis 部署
    mongodb4.0 安装
    gitstats 统计gitlab仓库中的代码
  • 原文地址:https://www.cnblogs.com/jiangyihz/p/7249124.html
Copyright © 2011-2022 走看看