2

我想在其中创建DataGridColumn一个Button。看起来很容易对吧?

仅有的:

  • 客户应该能够使用箭头导航网格列。
  • 当它DataGridGolumn具有Button焦点时,输入应该激活命令。(例如,无需按 Tab 即可将焦点放在按钮上)
  • 使用EnterSpace单击按钮

我试过DataGridTemplateColumna CellTemplate

<DataGridTemplateColumn CellStyle="{StaticResource ResourceKey=Button}">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button Style="{StaticResource LinkButton}" FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="Click">
                        <i:InvokeCommandAction Command="Delete" />
                    </i:EventTrigger>
                </i:Interaction.Triggers>
                <Image Source="Delete.ico"/>
            </Button>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
4

1 回答 1

2

如果您想在 Cell 获得焦点后立即聚焦您的按钮,您应该设置KeyboardNavigation.IsTabStopFalseon DataGridCell -

<DataGridTemplateColumn CellStyle="{StaticResource ResourceKey=Button}">
    <DataGridTemplateColumn.CellTemplate>
        ....
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="KeyboardNavigation.IsTabStop" Value="False"/>
        </Style>
     </DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>

因此,当您按下 时Tab,它会发现这DataGridCell不是此处的停止点,因此请移至下一个制表位,这将是您的Button.

您可以创建Stylein 资源并在任何需要相同行为的地方使用它。

于 2012-11-27T17:58:25.703 回答