¿Elemento de vista de árbol WPF editable en doble clic? (con estilos?)

Soy un poco un novato de WPF, así que me disculpo por cualquier tontería inherente en esta pregunta (!)

Estoy tratando de habilitar la edición de etiquetas de vista de árbol de WPF con un doble clic: busqué en Google esto, y parece que las dos formas de hacerlo son con un control personalizado o con un estilo que oculta uno de TextBox / TextBlock.

Usar un estilo para establecer que la etiqueta sea un cuadro de texto basado en un DataTrigger parece bastante fácil (por ejemplo, 1 a continuación), pero significa que cada vez que se selecciona una fila, se está 'editando'.

Lo que realmente me gustaría hacer es habilitar esto (Transición a cuadro de texto) en un evento de doble clic con el mouse, pero parece que EventTriggers no se puede usar de la siguiente manera, porque son transitorios. (No parece que pueda simplemente usar el evento DoubleClick en código detrás, porque eso no me permite (??) afectar los controles mostrados para mostrar / ocultar los cuadros de texto).

El uso de un control personalizado completo parece ser la alternativa: aquí hay un ejemplo de trabajo AAALMOST (http://www.codeproject.com/KB/WPF/editabletextblock.aspx ), sin embargo, no funciona en presencia de cláusulas HierachicalDataTemplate (y no parece que haya una solución próxima).

(por ejemplo, 1: cambiar de bloque de texto a cuadro de texto cuando se selecciona)

<Window x:Class="treetest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:treetest"
Title="Window1" Height="300" Width="300">
<Window.Resources>
    <Style x:Key="EditableContentControl" TargetType="{x:Type ContentControl}">
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate DataType="{x:Type local:CompositeViewModel}">
                    <TextBlock Text="{Binding Path=Name}" />
                </DataTemplate>
            </Setter.Value>
        </Setter>
        <Style.Triggers>
            <DataTrigger Binding="{Binding Path=IsSelected,RelativeSource=RelativeSource AncestorType={x:Type TreeViewItem}}}"
                 Value="True">
                <Setter Property="ContentTemplate">
                    <Setter.Value>
                        <DataTemplate DataType="{x:Type local:CompositeViewModel}">
                            <TextBox Text="{Binding Path=Name,UpdateSourceTrigger=PropertyChanged}" />
                        </DataTemplate>
                    </Setter.Value>
                </Setter>                
            </DataTrigger> 
        </Style.Triggers>
    </Style>  
</Window.Resources>
<Grid>
    <TreeView Margin="12,12,115,12" Name="treeView1"  
              ItemsSource="{Binding Path=GetRootData}"
              >
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate DataType="{x:Type local:CompositeViewModel}" ItemsSource="{Binding Path=Children}">
                <ContentControl Content="{Binding}" Style="{StaticResource EditableContentControl}"/>
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>
</Grid>
</Window>

Respuestas a la pregunta(3)

Su respuesta a la pregunta