简体   繁体   English

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

[英]how to databind textbox inside WPF datagrid to a property in viewmodel?

How to bind textbox inside WPF Data grid to a property in view model? 如何将WPF数据网格内的文本框绑定到视图模型中的属性? I am using MVVM pattern. 我正在使用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 is a property as defined below: DisplayName是如下定义的属性:

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

In case you simply want to bind text, i would suggest to use DataGridTextColumn instead of DataGridTemplateColumn . 如果您只是想绑定文本,我建议您使用DataGridTextColumn而不是DataGridTemplateColumn No need to recreate column which already exists. 无需重新创建已经存在的列。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM