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