user2330678
user2330678

Reputation: 2311

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? I am using MVVM pattern.

<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:

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

Upvotes: 2

Views: 8155

Answers (1)

Rohit Vats
Rohit Vats

Reputation: 81253

In case you simply want to bind text, i would suggest to use DataGridTextColumn instead of 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>

Upvotes: 3

Related Questions