当您点击ListBox
(其DataTemplate
)内的控件时,我想知道哪个项目可以选择该项目。
我有一个ListBox
的WPF应用程序。使用DataTemplate
,我内部有TextBlock
和Textbox
。
<ListBox PreviewMouseLeftButtonDown="myHandler">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock />
<TextBox />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
现在,如果单击TextBlock,它将选择整个项目。但是如果你在TextBox中单击(重复:Box,而不是Block),它就不会选择该项目。
我可以在ListBox的PreviewMouseLeftButtonDown中放入代码,它可以告诉我单击了TextBox的ListBoxItem的索引吗?或者其他一些方法来选择ListBoxItem?
答案 0 :(得分:2)
答案 1 :(得分:2)
首先,我想再次看一下UI组合...文本框作为列表框的项目很少见。列表框通常是项目的选择器(而不是编辑器)。
有了这个......如果你真的必须拥有它。使用基于ViewModel的方法(如果您是新手,请搜索Josh Smith的MVVM文章)。使这项工作背后的想法是VM / ItemVM监听TextProperty的更改通知。一旦获得一个,它就会找到相关项并切换项的IsSelected属性。您需要将ListItem的IsSelected属性绑定到VM的IsSelected属性才能使其工作。
答案 2 :(得分:0)
如果你使用mvvm,请使用Gishu给出的方法。
如果没有,你可以使用TextBox GetFocus事件,将可视树向上走到listboxitem并选择它。