我试图让DataGridTemplateColumn以相同行为的TextColumn如何在DataGridTemplateColumn中的编辑文本框获得焦点时选择所有文本?
- 当细胞进入编辑模式(按F2),用户可以立即开始键入新值
- 默认情况下,现有文本内容被选中 - 以便您可以轻松设置新值
获得第一个完成;但是选择所有文本不起作用。正如许多帖子所提到的,尝试连接到GotFocus事件并选择代码隐藏中的所有文本。这适用于独立的文本框;但是对于一个TextBox,它是TemplateColumn的编辑控件,这不起作用。
任何想法? 代码示例:
<Window.Resources>
<Style x:Key="HighlightTextBoxStyle" TargetType="{x:Type TextBox}">
<EventSetter Event="GotFocus" Handler="SelectAllText"/>
<EventSetter Event="GotMouseCapture" Handler="SelectAllText"/>
<Setter Property="Background" Value="AliceBlue"/>
</Style>
<DataTemplate x:Key="DefaultTitleTemplate">
<TextBlock Text="{Binding Title}"/>
</DataTemplate>
<DataTemplate x:Key="EditTitleTemplate">
<TextBox x:Name="Fox"
FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"
Text="{Binding Path=Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource HighlightTextBoxStyle}">
</TextBox>
</DataTemplate>
</Window.Resources>
<DockPanel>
<TextBox DockPanel.Dock="Top" x:Name="Test" Text="{Binding Path=(FocusManager.FocusedElement).Name, ElementName=MyWindow}"
Style="{StaticResource HighlightTextBoxStyle}"/>
<toolkit:DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False">
<toolkit:DataGrid.Columns>
<toolkit:DataGridTemplateColumn Header="Templated Title"
CellTemplate="{StaticResource DefaultTitleTemplate}"
CellEditingTemplate="{StaticResource EditTitleTemplate}" />
<toolkit:DataGridTextColumn Header="Title" Binding="{Binding Path=Title}" />
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
</DockPanel>
据我可以告诉这个问题仍然没有解决。 – Dabblernl 2011-04-25 22:30:56
@Dabblernl - 尝试如果以下管道胶带修补程序的作品。 – Gishu 2011-04-26 06:51:46