在我的应用程序中,我有UserControl
DataGrid
。 DataGrid
中的一个单元格定义如下:
<DataGridTemplateColumn Header="Alternative path" Width="Auto" MinWidth="60" SortMemberPath="OtherModulePath">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding OtherModulePath}" Style="{StaticResource DataGridTextBlockStyle}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding OtherModulePath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Padding="4,1"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource BaseDataGridCellStyle}">
<Setter Property="AutomationProperties.Name"
Value="{Binding OtherModulePath,
Converter={Converter:AutomationPropertiesNameFromEmptyToSpaceConverter},
FallbackValue=' '}"/>
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
如果我选择单元格并再次使用鼠标左键单击,则显示编辑 - TextBox
。
DataGrid
以上有一个Button
。点击此Button
后,我显示的DataGridCell
应切换到编辑模式,以便显示OtherModulePath的TextBox
。
如何使用MVVM执行此操作?
我知道如何使用代码隐藏,但我不知道如何重新开始数据绑定。
答案 0 :(得分:0)
DataGrid有一个名为BeginEditCommand
的命令,您可以将Button的命令绑定到该命令,如下所示:
//suppose your grid has name of dg
<Button Command="{x:Static DataGrid.BeginEditCommand}"
CommandTarget="{Binding ElementName=dg}">
<!-- ... -->
</Button>