首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >数据网格的CellEditingTemplate和编辑模式中的焦点

数据网格的CellEditingTemplate和编辑模式中的焦点
EN

Stack Overflow用户
提问于 2010-10-19 21:04:38
回答 3查看 17.6K关注 0票数 20

当定制一个同时提供CellTemplateCellEditingTemplate的列时,我遇到了WPFToolkit DataGrid的问题。如果你看一下下面,你会发现我的编辑模板只有一个CheckBox。在函数意义上一切都很好,但当按F2编辑单元格时,还必须按TAB键才能使CheckBox获得焦点。理想情况下,可以按F2和空格键来切换值。目前,用户必须按F2、TAB、空格键。我已尝试设置TabIndex,但无济于事。我的想法快用完了。

代码语言:javascript
复制
<WPFToolkit:DataGridTemplateColumn Header="Turn"
                                   MinWidth="60">
    <WPFToolkit:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Image Height="16">
                <Image.Style>
                    <Style TargetType="{x:Type Image}">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding CanTurn}" Value="True">
                                <Setter Property="Source" Value="/Images/16/Tick.png" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Image.Style>
            </Image>
        </DataTemplate>
    </WPFToolkit:DataGridTemplateColumn.CellTemplate>

    <WPFToolkit:DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <CheckBox IsChecked="{Binding Path=CanTurn}" HorizontalAlignment="Center" HorizontalContentAlignment="Center" />
        </DataTemplate>
    </WPFToolkit:DataGridTemplateColumn.CellEditingTemplate>
</WPFToolkit:DataGridTemplateColumn>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-19 22:47:41

尝尝这个

代码语言:javascript
复制
<DataGridTemplateColumn.CellEditingTemplate>
    <DataTemplate>
        <CheckBox Name="checkbox" IsChecked="{Binding Path=CanTurn}" HorizontalAlignment="Center" HorizontalContentAlignment="Center" />
        <DataTemplate.Triggers>
            <Trigger SourceName="checkbox" Property="IsVisible" Value="True">
                <Setter TargetName="checkbox" Property="FocusManager.FocusedElement" Value="{Binding ElementName=checkbox}" />
            </Trigger>
        </DataTemplate.Triggers>
    </DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
票数 26
EN

Stack Overflow用户

发布于 2011-07-13 18:42:04

或者这个..。

代码语言:javascript
复制
<DataGridTemplateColumn Header="Long" IsReadOnly="False" Width="100">
  <DataGridTemplateColumn.CellEditingTemplate>
    <DataTemplate>
      <CheckBox FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}" IsChecked="{Binding Path=CanTurn}" HorizontalAlignment="Center" HorizontalContentAlignment="Center" />
    </DataTemplate>
  </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
票数 14
EN

Stack Overflow用户

发布于 2016-07-19 14:23:05

如果你想把焦点放在编辑上并选择绑定给出的文本,试试这个。

代码语言:javascript
复制
<DataGridTemplateColumn.CellEditingTemplate>
    <DataTemplate>
        <TextBox Text="{Binding Parameter0, Mode=TwoWay}" Loaded="TbLoaded" />
    </DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>

代码隐藏:

代码语言:javascript
复制
private void TbLoaded(object sender, EventArgs e)
{
    TextBox tb = sender as TextBox;
    if (tb == null) return;

    tb.SelectAll();
    FocusManager.SetFocusedElement(this, tb);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3968612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档