DataGrid中的EditMode,只需通过XAML触发器单击即可

时间:2012-04-23 21:07:02

标签: wpf xaml wpfdatagrid

我有DataGrid,如果我想要在单元格中编辑值,我必须对此执行双击并在此处显示光标(只需单击一下,只需选择适当的单元格)..!

我可以(通过Xaml触发器)单击单元格而不是单击它们,而是立即输入EditMode,当我在带箭头的单元格之间切换时,它们也会进入EditMode?

这是我目前修改后的代码

   <Page.Resources>
    <grd:LenghthToVisibility x:Key="LenghthToVisibility"/>
    <grd:StringToSystemIconConverter x:Key="StringToSystemIconConverter"/>
    <grd:booleanConverter x:Key="booleanConverter"/>
    <DataGrid.CellStyle>
        <Style TargetType="{x:Type DataGridCell}">
            <Setter Property="IsTabStop" Value="False" />
            <Setter Property="Focusable" Value="False" />
        </Style>
      <Style x:Key="RightCellStyle" TargetType="DataGridCell">
        <Setter Property="HorizontalAlignment" Value="Right" />
    </Style>
    <Style x:Key="RightAlignedCell" TargetType="{x:Type DataGridCell}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type DataGridCell}">
                    <Grid Background="{TemplateBinding Background}">
                        <ContentPresenter HorizontalAlignment="Right" VerticalAlignment="Center"/>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <Trigger Property="DataGridCell.IsSelected" Value="True">
                <Setter Property="IsEditing" Value="True" />
                <Setter Property="Background" Value="#356815" />
                <Setter Property="Foreground" Value="#e2fce2" />
            </Trigger>
           </Style.Triggers>
    </Style>
        </DataGrid.CellStyle>
    </Page.Resources>

感谢。

我有两个奇怪的错误并刷新上面的代码: 1)“错误5在'DataGrid'类型中找不到可附加属性'CellStyle'。 2)“错误2”XML命名空间'schemas.microsoft.com/winfx/2006/xaml/presentation'中不存在标记'DataGrid.CellStyle'。“

1 个答案:

答案 0 :(得分:1)

要忽略DataGridCell(关注内容),请使用:

<DataGrid.CellStyle>
    <Style TargetType="{x:Type DataGridCell}">
        <Setter Property="IsTabStop" Value="False" />
        <Setter Property="Focusable" Value="False" />
    </Style>
</DataGrid.CellStyle>

如果选择,请在ElementStyle / EditingElementStyleCellTemplate / CellEditingTemplate环境设置DataGridCell.IsEditing Property中输入EditMode为true:

<Style x:Key="RightAlignedCell" TargetType="{x:Type DataGridCell}">
    ...
    <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="IsEditing" Value="True" />
            ...
        </Trigger>
    </Style.Triggers>
</Style>