当前位置: 首页 > 知识库问答 >
问题:

WPF:无法从SelectedItem获取TreeViewItem

秦炜
2023-03-14

我正在使用HierarchycalDataTemplate来形成树。我正在做以下事情:1。选择一个文件夹并单击“添加文件夹”按钮。2.应显示选定文件夹下的新文件夹。ViewModel已正确更新,以便在选定的Folder元素下有一个文件夹,并在TreeView中更新该文件夹。

我关心的是如何获取添加文件夹的TreeView项。我有对新添加文件夹的引用,但不知道如何获取同一文件夹的TreeViewItem。下面是添加文件夹的示例代码

elementfolderfolder=ViewModel。添加文件夹(选择文件夹,“新建文件夹”)
此处,folder是对ElementFolder类型添加的新文件夹的引用。HierarchycalDataTemplate的ItemsSource是ElementFolder。

请帮忙。我被卡住了。读了很多帖子,但没有一个来拯救我。请帮助!!我尝试了这个链接中提到的想法,但它没有帮助:如何从层次数据模板项获得TreeViewItem?

共有1个答案

归俊杰
2023-03-14

下面是我如何让它工作的

  1. 设置TreeView的ItemsContainerStyle,使得每当选择TreeViewItem时都会调用处理程序。这可以通过EventSetter绑定来实现,即为所选事件设置一个处理程序。
  2. 在我的ViewModel中创建一个IsFldrS选属性的绑定。
    注意:需要一个双向绑定
  3. 每当一个新的文件夹被添加到树(请参考示例代码关于我如何添加文件夹),我有参考该文件夹。使用此引用,我将文件夹对象的IsFldrS选属性设置为true。
  4. 执行此操作后,新添加的TreeViewItem的选定属性设置为true。基本上,这将以编程方式选择TreeViewItem)。
  5. 这将触发S选事件,该事件反过来将调用它的处理程序,其中发送者将是我需要的所选TreeViewItem。

注意:当您获得所需的TreeViewItem时,请将RoutedEventArgs的Handled属性设置为true(e.Handled=true),否则将多次调用此处理程序,直到到达树的根(这是由于冒泡事件),因此您将丢失所需的TreeViewItem。

 类似资料:
  • 我有一个以下格式的日期,我需要解析它,并转换成一个纪元时间。 关于我做错了什么有什么帮助吗?

  • 当我这样做的时候 如何解析datetime字符串,以便将其解释为始终来自时区“欧洲/柏林”?

  • 问题内容: 当我这样做时 我得到以下异常: 如何解析日期时间字符串,以便将其始终解释为来自“欧洲/柏林”时区? 问题答案: 问题在于,a 和a 之间存在差异。要创建一个,您需要一个区域偏移量。但是,a和a之间没有一对一的映射关系,因为它实际上取决于当前的夏时制时间。对于ZoneId像“欧洲/柏林”一样的商品,夏季有一个偏移量,而冬季有一个不同的偏移量。 在这种情况下,使用代替会更容易。在解析期间,

  • 嘿,这里有人能帮我吗?我想从user.java获取SharedPreferences,但总是得到以下错误: 2020-12-29 16:42:11.424 220 63-22063/com.example.BauwagenApp E/AndroidRuntime:致命异常:主进程:com.example.BauwagenApp,PID:22063 java.lang.RuntimeExceptio

  • 我一直在尝试使用nativescript创建一个android应用程序。我正在使用fetch模块从服务器获取响应。当我试图从httpbin获得响应时。org/get,没关系。但当我试图从本地服务器获取响应时,网络请求失败。错误 发送到httpbin。组织/获取- 发送到本地主机:8000/api- 当我尝试从纯节点中的localhost:8000/api获取响应时。js通过请求模块。它工作得很好。

  • 问题内容: 我已经在几个线程中看到了答案,但对我却没有解决,而且由于我的问题偶尔发生,因此问这个问题是否有人有任何想法。 我正在使用jedis版本2.8.0,Spring Data Redis版本1.7.5。和redis服务器版本2.8.4用于我们的缓存应用程序。 我有多个缓存保存在redis中,并且从redis获得请求。我正在使用spring数据redis API保存和获取数据。 所有保存和获取