如何将WPF数据网格中的文本框数据绑定到视图模型中的属性

本文关键字:数据绑定 视图 属性 模型 文本 数据 WPF 数据网 网格 | 更新日期: 2024-10-23 13:28:18

如何将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);
                }
            }
        }

如何将WPF数据网格中的文本框数据绑定到视图模型中的属性

如果您只是想绑定文本,我建议使用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>