WPF: CellEditingTemplate comment puis-je définir le focus sur le contrôle interne par double-cliquez ou cliquez sur

J'ai écrit un usercontrol de contrôle DataGrid avec CellEditingTemplate. Le DataTemplate de cette édition-Modèle est une zone de texte et le curseur va aller dans la zone de texte, par trois fois sur, que puis-je faire, si je veux mettre le curseur sur la zone de texte par double-clic ou un clic?

Voici mon code:

<Window x:Class="MultiLineEditDataGrid.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:MultiLineEditDataGrid"
    Title="MainWindow" Height="350" Width="525">
<Grid DataContext="{Binding Source={x:Static Application.Current}, Path=CompanyManager}">
    <Grid.RowDefinitions>
        <RowDefinition Height="270"/>
        <RowDefinition Height="30"/>
    </Grid.RowDefinitions>
    <DataGrid ItemsSource="{Binding Companies}" CanUserAddRows="False" AutoGenerateColumns="False">
        <DataGrid.Resources>
            <DataTemplate x:Key="cellTemplate">
                <TextBlock Text="{Binding Description}"/>
            </DataTemplate>
            <DataTemplate x:Key="cellEditingTemplate">
                <local:MultiLineTextBox Text="{Binding Description}"/>
            </DataTemplate>
        </DataGrid.Resources>
        <DataGrid.Columns>
            <DataGridTextColumn Header="Company" Binding="{Binding Name}"/>
            <DataGridTemplateColumn Header="Description" 
                                    CellTemplate="{StaticResource cellTemplate}" 
                                    CellEditingTemplate="{StaticResource cellEditingTemplate}"/>
        </DataGrid.Columns>
    </DataGrid>
    <Button Grid.Row="1" Content="Add" Command="{Binding AddCommand}"/>
</Grid>

MultiLineTextBox est la zone de texte qui j'ai hériter de la zone de texte, et de remplacer méthode OnKeyDown.

MultiLineTextBox code:

public class MultiLineTextBox : TextBox
{
    ///<summary>
    ///On Key Down.
    ///</summary>
    ///<param name="e"></param>
    protected override void OnKeyDown ( KeyEventArgs e )
    {
        base.OnKeyDown ( e );
        string oldText = Text;
        ModifierKeys keys = Keyboard.Modifiers;
        if ( e.Key == Key.Enter )
        {
            if ( ( Keyboard.Modifiers & ModifierKeys.Control ).Equals ( ModifierKeys.Control ) )
            {
                int index = SelectionStart;
                oldText = oldText.Insert ( index, Environment.NewLine );
                Text = oldText;
                Select ( index + 1, 0 );
                e.Handled = true;
            }
            else
            {
                e.Handled = false;
            }
        }
        else if ( e.Key == Key.Escape )
        {
            Text = oldText;
            e.Handled = false;
        }
    }
}
InformationsquelleAutor yafeya | 2011-02-14