代码之家  ›  专栏  ›  技术社区  ›  wpfwannabe

数据报的CellEditingTemplate和Focus处于编辑模式

  •  17
  • wpfwannabe  · 技术社区  · 14 年前

    我对wpftoolkit有问题 DataGrid 当自定义列时,同时提供 CellTemplate CellEditingTemplate . 如果你看下面,你会看到我的编辑模板有一个 CheckBox . 从功能上讲,一切都很好,但当按F2键编辑单元格时,还必须按Tab键才能编辑 复选框 获得焦点。理想情况下,可以点击F2和空格来切换值。当前,必须按F2、制表符、空格键。我试过设置 TabIndex 无济于事。我没有主意了。

    <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>
    
    3 回复  |  直到 8 年前
        1
  •  23
  •   Fredrik Hedblad    13 年前

    试试这个

    <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>
    
        2
  •  12
  •   SteffenSH    13 年前

    或者这个…

    <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>
    
        3
  •  3
  •   WPFGermany    8 年前

    如果要将焦点设置为“编辑”,并选择绑定给定的文本,请尝试此操作。

    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <TextBox Text="{Binding Parameter0, Mode=TwoWay}" Loaded="TbLoaded" />
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
    

    代码落后:

    private void TbLoaded(object sender, EventArgs e)
    {
        TextBox tb = sender as TextBox;
        if (tb == null) return;
    
        tb.SelectAll();
        FocusManager.SetFocusedElement(this, tb);
    }
    
    推荐文章