Usando WPF, tengo un control ListBox
con un DataTemplate
dentro de él. El código XAML relevante se muestra a continuación:Edición en línea TextBlock en un ListBox con plantilla de datos (WPF)
<ListBox Name="_todoList" Grid.Row="1" BorderThickness="2"
Drop="todoList_Drop" AllowDrop="True"
HorizontalContentAlignment="Stretch"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
AlternationCount="2">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Margin="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<CheckBox Grid.Column="0" Checked="CheckBox_Check" />
<TextBlock Name="descriptionBlock"
Grid.Column="1"
Text="{Binding Description}"
Cursor="Hand" FontSize="14"
ToolTip="{Binding Description}"
MouseDown="TextBlock_MouseDown" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Lo que estoy tratando de hacer es hacer que el TextBlock
responden a un (doble) haga clic en el que la convierte en una TextBox
. El usuario puede editar la descripción y presionar regresar o cambiar el foco para realizar el cambio.
He intentado agregar un elemento TextBox
en la misma posición que el TextBlock y haciendo su visiblity de Collapsed
, pero no sé cómo navegar hacia la derecha TextBox
cuando el usuario ha hecho clic en un TextBlock
. Es decir, sé que el usuario ha hecho clic en un determinado TextBlock
, ahora queTextBox
¿muestro?
Cualquier ayuda sería muy apreciada,
-Ko9
Como consejo, en lugar de usar las etiquetas 'pre' y los corchetes angulares que se escapan explícitamente, puede simplemente pegar XAML directamente en el editor y usar el botón 101010 para formatearlo como código. – itowlson