【发布时间】:2018-11-08 17:26:47
【问题描述】:
使用 WPF,我有一个 ListBox 控件,里面有一个 DataTemplate。相关的 XAML 代码如下所示:
<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>
我要做的是让TextBlock 响应(双击)将其变成TextBox。然后用户可以编辑描述,然后按回车键或更改焦点进行更改。
我尝试在与 TextBlock 相同的位置添加 TextBox 元素并使其可见 Collapsed,但当用户单击 @ 时,我不知道如何导航到右侧 TextBox 987654329@。也就是说,我知道用户点击了某个TextBlock,现在哪个我要显示TextBox?
任何帮助将不胜感激,
-Ko9
【问题讨论】:
-
作为提示,您可以直接将 XAML 粘贴到编辑器中,然后使用 101010 按钮将其格式化为代码,而不是使用
pre标记和显式转义尖括号。 -
感谢您以一种基本且非常全面的方式展示了 ListBox 中的 DataTemplate 的工作原理!
标签: c# wpf xaml listbox datatemplate