与 CollectionViewSource 绑定

2024-02-04

我正在尝试使用 CollectionViewSource 实现一些组合框排序。该组合框实际上是数据模板的一部分,并在列表视图中重复出现。我的第一种方法似乎有效(使用 CollectionViewSource),但我的所有组合框共享相同的数据上下文。这使得每当其他盒子之一发生变化时,所有其他盒子都会发生变化以反映 - 这不是期望的副作用。

我决定回过头来尝试使用内联 xaml 来指定 CollectionViewSource(而不是将 cvs 创建为静态资源)来实现基本组合框(不在数据模板内)。我无法成功显示我的数据。我的想法可能完全错误,因为我对 WPF 还很陌生。

这是我的组合框的 xaml:

<ComboBox>
    <ComboBox.ItemsSource>
        <Binding>
            <Binding.Source>
                <CollectionViewSource Source="{Binding Path=Configurations}">
                    <CollectionViewSource.SortDescriptions>
                        <scm:SortDescription PropertyName="AgencyName" />
                    </CollectionViewSource.SortDescriptions>
                </CollectionViewSource>
            </Binding.Source>
        </Binding>
    </ComboBox.ItemsSource>
</ComboBox>

此组合框所在的用户控件的 DataContext 绑定到一个对象,该对象具有名为 Configurations 的 ObservableCollection,并且每个配置都有一个名为 AgencyName 的属性。我已经验证,使用没有 cvs 的标准绑定可以正常工作,所以我知道一切都很好。

任何帮助将不胜感激,因为我已经没有借口给我的老板了:)。我也不想进入代码并在后面的代码中进行排序(当我构建 ObservableCollection 时我可以这样做,但恕我直言,这违反了 DRY 原则)。


“每当其他盒子之一发生变化时,所有其他盒子都会发生变化以反映”到底是什么意思?您是在谈论 SelectedItem 吗? 如果是这样,那么它可能有助于设置IsSynchronizedWithCurrentItem = false在你的组合框中。

除此之外:我认为只要您在后面的代码中创建并排序 ICollectionView 一次,就不会违反 DRY 原则,因为您在 XAML 中不再需要做更多的事情。但我发现可能还有其他原因说排序等功能应该在视图中完成,从模型-视图-视图模型的角度来说。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与 CollectionViewSource 绑定 的相关文章

随机推荐

  • 在 Python 中模拟导入模块

    我正在尝试对使用导入的外部对象的函数实施单元测试 例如助手 py is import os import pylons def some func arg var1 os path exist var2 os path getmtime v
  • 无法使用 OpenCV 从辅助网络摄像头的 VideoCapture 读取帧

    Code 与主网络摄像头 设备 0 完美配合的简单示例 VideoCapture cap 0 if cap isOpened std cout lt lt Unable to read stream from specified devic
  • 为什么我在 raw_input 期间无法捕获 KeyboardInterrupt?

    这是一个测试用例 try targ raw input Please enter target except KeyboardInterrupt print Cancelled print targ 当我按 ctrl c 时 我的输出如下
  • SqlAlchemy - 按关系属性过滤

    我对 SQLAlchemy 没有太多经验 但我遇到了一个无法解决的问题 我尝试搜索并尝试了很多代码 这是我的课程 简化为最重要的代码 class Patient Base tablename patients id Column Integ
  • 在 Bolts 中,如何使用 continueWith() 和 continueWithTask()?

    除了同步与异步之外 它们文档中的差异也让我感到困惑 他们的例子github页面 https github com BoltsFramework Bolts Android chaining tasks together看起来仍然是同步调用的
  • Netbeans - 从数据库生成实体类

    我使用的是 netbeans IDE 7 1 我正在尝试从数据库 sql server 生成实体类 我能够设置与此远程数据源的连接 但在数据库向导的新实体类中 表没有显示 并且在底部显示 选择至少一个表 我可以执行查询并浏览 netbean
  • 如何在Altera Quartus中生成.rbf文件?

    什么是 rbf 文件以及如何在 Windows 上从 Quartus 输出文件 sof 生成它们 An RBF is a 原始二进制文件例如 它代表原始数据 这些数据将被加载到闪存中 以便在上电时初始化 FPGA A SOF is an S
  • 获取数据访问层内的数据库上下文

    我在尝试解决 EF Core 方面的一些问题 我使用 MVC Core 应用程序中的启动代码来初始化数据库上下文 这是我的数据库上下文 public class AccountsDBContext DbContext public Acco
  • 将 UTC java.sql.Time 转换为具有正确 DST 的 java.time.localtime

    我在将从数据库获取的 java sql Time UTC 转换为 java time LocalTime GMT 1 DST 时遇到问题 总是缺少 DST 时间 因此 时间 03 00 仅转换为本地时间 04 00 而不是 05 00 Sa
  • 将 AES IV 存储在数据库中的密文前面是否安全?

    我想将 AES 加密数据存储在数据库字段中 将 AES IV 每行唯一 存储在密文前面是否安全 例如 IV 密文 两者都将以 Base64 进行编码 使用的Key不会存储在数据库中 这是安全的 初始化向量的目的是在生成的密码中插入一些随机性
  • 如何从控制台设置 parpool/matlabpool 中的最大工作人员数量?

    我知道如何使用 Matlab 中的并行首选项窗口更改最大工作人员数量 但我找不到任何有关如何从控制台 代码更改首选项的文档 特别是关于如何更改我可以的最大工作人员数量的文档在 for 循环中使用 任何帮助将不胜感激 你想要的parpool功
  • 在嵌套轨道表单上创建多对多关系

    我正在尝试同时创建组 用户和成员资格 多对多关系 人们可以在创建组时将用户添加到组中 然后我希望它能够路由到包含所有成员的组的视图 我可以将要创建的用户和当前用户的成员资格保存到数据库中 然而 我正在努力获取新创建的 User 对象的 id
  • Apache POI Excel 工作簿创建需要很长时间

    我注意到使用 Apache POI v3 10 例如 xlsx 文件的工作簿创建语句 Workbook wb WorkbookFactory create inputStream or Workbook wb new XSSFWorkboo
  • 命名空间别名的范围是什么?

    在函数定义内定义的 C 命名空间别名是否具有块 函数 文件或其他作用域 有效期 这是区块的有效期 例如 如果您按如下方式定义命名空间别名 则命名空间别名 abc 在外部无效 block namespace abc xyz abc test
  • 使用 PHP 代码的 WordPress Woocommerce 建议

    我正在使用 woo commerece 插件 我想在每个产品的标题下有一个子标题 样式和格式已排序 但我希望在子标题部分中显示特定的类别 我已经设法显示所有类别 但我想将其范围缩小到父类别下的一个类别 下面是我正在使用的代码 任何人都可以建
  • C 中循环中的 if 语句被跳过

    在函数验证中 我有一个名为 size 的循环 它与 foodSelect 中的第三个循环相同 只是由于某种原因它的工作方式不同 它不会先提示我输入 而是直接进入其中的 if 并询问What size L Large M Medium S S
  • 没有 class_name 的 FactoryBot 命名空间模型

    我有这样命名的模型 class Vehicle lt ActiveRecord Base end class Vehicle Car lt Vehicle end class Vehicle Train lt Vehicle end cla
  • 将 List 拆分为连续数字组[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有一个排序的List
  • 使用 aws-cli 将 URL 保存到 AWS 参数存储

    好吧 所以我尝试以编程方式将无服务器生成的 API 端点存储在参数存储中 以供另一个项目摄取 举个例子 我将尝试存储 google com aws ssm put parameter name dev someStore value htt
  • 与 CollectionViewSource 绑定

    我正在尝试使用 CollectionViewSource 实现一些组合框排序 该组合框实际上是数据模板的一部分 并在列表视图中重复出现 我的第一种方法似乎有效 使用 CollectionViewSource 但我的所有组合框共享相同的数据上