Как выбрать весь текст, когда текстовое поле редактирования в DataGridTemplateColumn получает фокус?

Я пытаюсь заставить DataGridTemplateColumn вести себя тождественно к TextColumn

  • когда ячейка входит в режим редактирования (Нажатие F2), пользователь может сразу начать вводить в новом значении
  • по умолчанию содержание существующего текста выбрано - так, чтобы можно было установить новые значения легко

Получил первый сделанный; однако выбор всего текста не работает. Как упомянуто многими сообщениями, которые попробовали сцепиться в событие GotFocus и выбрать весь текст в коде - позади. Это работало на автономное текстовое поле; однако для Текстового поля, которое является средствами редактирования для 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>
9
задан Dabblernl 26 April 2011 в 05:45
поделиться