当您单击ListBox (它的DataTemplate)中的控件时,我想知道是哪一项,这样我就可以选择该项。
我有一个带有ListBox的WPF应用程序。使用DataTemplate时,我有一个TextBlock和一个Textbox。
<ListBox PreviewMouseLeftButtonDown="myHandler">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock />
<TextBox />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>现在,如果您单击TextBlock,它将选择整个项目。但是如果你点击TextBox (重复:方框,而不是区块),它不会选择项目。
有没有代码可以放在列表框的PreviewMouseLeftButtonDown中,它可以告诉我我单击了其TextBox的ListBoxItem的索引?或者选择ListBoxItem的其他方式?
发布于 2011-05-13 13:33:01
首先,我想让你们再看一看UI的组成。文本框作为列表框的项很少见。列表框通常是项的选择器(而不是编辑器)。
有了这条路..如果你真的想拥有它。使用基于ViewModel的方法(如果您是新手,请搜索Josh Smith的MVVM文章)。这背后的想法是VM/ItemVM侦听TextProperty的更改通知。一旦获得,它就会找到相关的项,并切换该项的IsSelected属性。您需要将ListItem的IsSelected属性绑定到VM的IsSelected属性才能正常工作。
发布于 2011-05-13 14:52:27
如果您使用mvvm,请使用Gishu给出的方法。
如果没有,您可以使用TextBox GetFocus事件在可视化树中遍历,直到列表框项目并将其选中。
https://stackoverflow.com/questions/5987435
复制相似问题