【问题标题】:What is the C# equivalent of XAML's "/" in data-binding paths?数据绑定路径中 XAML 的“/”的 C# 等效项是什么?
【发布时间】:2019-06-20 01:36:34
【问题描述】:

我在实体框架中有 3 个实体:

收藏

子集合

子子集合

集合实体与子集合实体具有一对多的关系,而子集合实体又与子子集合实体具有一对多的关系。所有都是通过CollectionViewSource collectionViewSource 访问的可观察集合。

现在,在 XAML 中遍历 collectionViewSource 的层次结构很容易;我可以写ItemsSource="{Binding collectionViewSource/subcollection/subsubcollection}"之类的东西来遍历每个级别的当前项目。

在 C# 中,我可以通过编写 collectionViewSource.View.CurrentItem 来访问我视图中的当前集合项。但是,我需要能够比这更深入地研究,访问当前的子集合项以查看其子集合。我该怎么做?

【问题讨论】:

  • 没有直接的等价物。 / 进行属性遍历,但通过父/子绑定考虑绑定的当前位置。您需要查看树中所有绑定的 CollectionViewSource 的当前项以获取当前值。这不是一项简单的任务。
  • 啊,我担心会是这样。我可能会从 UI 中的 ListView 获取子子集合,但这感觉有点破坏了我的关注点分离,而且无论如何我已经引用了 collectionViewSource,所以这似乎是一种更清洁的方式关于它。
  • 您没有参考您正在使用的收藏吗?您正在寻找当前项目 3 级以下似乎有点奇怪。您是否真的直接绑定到实体框架对象而不是保存其数据的视图模型?
  • 我必须同意@Andy。实际上,我必须查找路径绑定语法中的/ 做了什么,因为我以前从未遇到过它。当我过去完成这种多级绑定时,我总是在每个级别的选定项目的视图模型上都有一个属性。这样,访问向下第 3 层的值就像检查我感兴趣的层的视图模型上的属性值一样简单。
  • @BradleyUffner,您的第一条评论回答了我猜想的问题,因此我们应该将其提升为答案。无论如何,也许这只是我对绑定引擎最佳实践的误解。在我的程序中,我将在 XAML 中有一个带有DataContext = "{StaticResource collectionViewSource}" 的网格,然后在该控件中创建一个带有ItemsSource="{Binding subcollection}" 的子项(即,一个ListView),我只是让绑定引擎完成它的工作。除了加载数据外,我没有触及后面代码中的任何绑定集合。但在这里我需要在事件处理程序中处理一些逻辑。

标签: c# wpf xaml data-binding collectionviewsource


【解决方案1】:

在 C# 中没有直接等效的 // 进行属性遍历,很像.,但通过其他控件上的父/子绑定来考虑绑定的当前位置。您需要查看树中所有绑定的 CollectionViewSource 的当前项以获取当前值。如果您无权访问这些控件或 CollectionViewSource,这可能并不简单。

【讨论】:

    猜你喜欢
    • 2010-10-01
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 2015-10-04
    相关资源
    最近更新 更多