DataGridCell在ViewModel中设置编辑模式

时间:2015-10-01 09:11:52

标签: c# wpf mvvm datagrid

在我的应用程序中,我有UserControl DataGridDataGrid中的一个单元格定义如下:

<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执行此操作?

我知道如何使用代码隐藏,但我不知道如何重新开始数据绑定。

1 个答案:

答案 0 :(得分:0)

DataGrid有一个名为BeginEditCommand的命令,您可以将Button的命令绑定到该命令,如下所示:

//suppose your grid has name of dg
<Button Command="{x:Static DataGrid.BeginEditCommand}"
        CommandTarget="{Binding ElementName=dg}">
   <!-- ... -->
</Button>