如何将WPF数据网格中的文本框数据绑定到viewmodel中的属性?

时间:2013-12-18 07:52:03

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

如何将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 个答案:

答案 0 :(得分:3)

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