首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单击ListBox with DataTemplate,选择ListBox Item

单击ListBox with DataTemplate,选择ListBox Item
EN

Stack Overflow用户
提问于 2011-05-13 13:03:34
回答 2查看 3.1K关注 0票数 1

当您单击ListBox (它的DataTemplate)中的控件时,我想知道是哪一项,这样我就可以选择该项。

我有一个带有ListBox的WPF应用程序。使用DataTemplate时,我有一个TextBlock和一个Textbox

代码语言:javascript
复制
<ListBox PreviewMouseLeftButtonDown="myHandler">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <StackPanel>
        <TextBlock />
        <TextBox />
      </StackPanel>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

现在,如果您单击TextBlock,它将选择整个项目。但是如果你点击TextBox (重复:方框,而不是区块),它不会选择项目。

有没有代码可以放在列表框的PreviewMouseLeftButtonDown中,它可以告诉我我单击了其TextBox的ListBoxItem的索引?或者选择ListBoxItem的其他方式?

EN

回答 2

Stack Overflow用户

发布于 2011-05-13 13:33:01

首先,我想让你们再看一看UI的组成。文本框作为列表框的项很少见。列表框通常是项的选择器(而不是编辑器)。

有了这条路..如果你真的想拥有它。使用基于ViewModel的方法(如果您是新手,请搜索Josh Smith的MVVM文章)。这背后的想法是VM/ItemVM侦听TextProperty的更改通知。一旦获得,它就会找到相关的项,并切换该项的IsSelected属性。您需要将ListItem的IsSelected属性绑定到VM的IsSelected属性才能正常工作。

票数 2
EN

Stack Overflow用户

发布于 2011-05-13 14:52:27

如果您使用mvvm,请使用Gishu给出的方法。

如果没有,您可以使用TextBox GetFocus事件在可视化树中遍历,直到列表框项目并将其选中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5987435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档