Wpf 单击带有DataTemplate的ListBox,选择ListBox项
当您单击Wpf 单击带有DataTemplate的ListBox,选择ListBox项,wpf,listbox,datatemplate,Wpf,Listbox,Datatemplate,当您单击列表框(其数据模板)中的控件时,我想知道是哪个项,以便选择该项 我有一个带有列表框的WPF应用程序。使用DataTemplate,我有一个TextBlock和一个Textbox <ListBox PreviewMouseLeftButtonDown="myHandler"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel> <TextBlock
列表框
(其数据模板
)中的控件时,我想知道是哪个项,以便选择该项
我有一个带有列表框的WPF应用程序。使用DataTemplate
,我有一个TextBlock
和一个Textbox
<ListBox PreviewMouseLeftButtonDown="myHandler">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock />
<TextBox />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
现在,如果单击TextBlock,它将选择整个项目。但是如果您在文本框内单击(重复:Box,而不是Block),它不会选择该项
是否有代码可以放在ListBox的PreviewMouseLeftButtonDown中,告诉我单击其文本框的ListBoxItem的索引?或者以其他方式选择ListBoxItem?首先,我想让您再次看看UI的组成。。。作为列表框项目的文本框很少出现。列表框通常是项目的选择器(而不是编辑器)
别挡道了。。如果你真的需要的话。使用基于ViewModel的方法(如果您不熟悉此方法,请搜索Josh Smith的MVVM文章)。实现这一点的想法是VM/ItemVM侦听TextProperty的更改通知。一旦它得到一个,它就会找到相关项并切换该项的IsSelected属性。您需要将ListItem的IsSelected属性绑定到VM的IsSelected属性,这样才能工作。如果使用mvvm,请使用Gishu给出的方法
如果没有,您可以使用TextBox GetFocus事件,在可视化树上走到listboxitem并选择它