【问题标题】:how to databind textbox inside WPF datagrid to a property in viewmodel?如何将 WPF 数据网格中的文本框数据绑定到视图模型中的属性?
【发布时间】:2013-12-18 07:52:03
【问题描述】:

如何将 WPF 数据网格中的文本框绑定到视图模型中的属性?我正在使用 MVVM 模式。

<DataGrid ItemsSource="{Binding Channels}" AutoGenerateColumns="False" ColumnWidth="*" CanUserAddRows="False">
            <DataGrid.Columns>

                <DataGridTemplateColumn Header="Display Name">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBox Text="{Binding DisplayName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="200"/>                        
</DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>

DisplayName 是一个如下定义的属性:

private string displayName;
        public string DisplayName
        {
            get { return displayName; }
            set
            {
                if (displayName != value)
                {                    displayName = value;
                    RaisePropertyChanged(() => DisplayName);
                }
            }
        }

【问题讨论】:

  • -1 这是一个糟糕的问题,请尝试用谷歌搜索您的问题。
  • 同意开发。发布一些您尝试过并在其中遇到问题的代码。

标签: c# .net wpf data-binding mvvm


【解决方案1】:

如果您只是想绑定文本,我建议使用DataGridTextColumn 而不是DataGridTemplateColumn。无需重新创建已存在的列。

<DataGrid ItemsSource="{Binding Channels}" AutoGenerateColumns="False"
          ColumnWidth="*" CanUserAddRows="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Display Name"
                            Width="200"
                            Binding="{Binding DisplayName}"/>
    </DataGrid.Columns>
</DataGrid>

【讨论】:

  • 我想要数据网格中的文本框列
  • @user2951819 默认情况下CellEditingTemplate里面有一个TexBox
  • @user2951819 - 同意 WiiMaxx 但我有一个问题,为什么要绑定到 ViewModel 中的属性。它应该在模型类中,即Channel 类(假设 Channels 是 Channel 类的对象的集合)。
  • 但是,如果您只希望 TextBox 同时用于 CellTemplate 和 CellEditingTemplate,您的代码可以正常工作,但它会在 Channel 类而不是 ViewModel 类中搜索属性。
  • @RohitVats 它可能是一个带有 ViewModel 集合的 ViewModel
猜你喜欢
  • 2012-06-23
  • 2010-12-21
  • 2012-09-26
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
  • 1970-01-01
  • 2014-01-17
  • 2016-04-25
相关资源
最近更新 更多