【问题标题】:How to get RibbonComboBox to syncronize with an ICollectionView.CurrentItem如何让 RibbonComboBox 与 CollectionView.Current Item 同步
【发布时间】:2019-04-29 15:09:19
【问题描述】:

我正在我的 ViewModel 中设置绑定到 ICollectionView 的 RibbonComboBox。当我选择一个新项目时,ICollectionView 的 CurrentItem 属性不会改变。

我尝试在组合框中的 RibbonGallery 上设置 IsSynchronizedWithCurrentItem="True",但这不会同步 CollectionView。

<RibbonGroup Header="MyGroup" DataContext="{StaticResource ResourceKey=MyViewModel}">
    <RibbonComboBox>
        <RibbonGallery IsSynchronizedWithCurrentItem="True" SelectedValue="{Binding MyCollectionView/}">
            <RibbonGalleryCategory ItemsSource="{Binding MyCollectionView}" DisplayMemberPath="Name"/>
        </RibbonGallery>
    </RibbonComboBox>
</RibbonGroup>

一切正常,ComboBox 包含完整的集合,我可以从列表中选择一个新项目,但是在我的基础代码中,即使 SelectedValue 上的 SelectedValue 在我的基础代码中,CollectionView 实际上并没有更改其 CurrentItem 属性RibbonGallery 已更改。

【问题讨论】:

标签: c# wpf


【解决方案1】:

我能找到的唯一解决方案是在我的视图模型中复制 CollectionView 的功能,并使用我可以绑定到的单独属性,这是不幸的,因为标准组合框在没有所有这些的情况下就可以很好地处理这个问题。还值得注意的是,我早期的 XAML 在使用 SelectedValue 而不是 SelectedItem 时出现了一个错误,但这并没有导致问题。

        public object SelectedItem
        {
            // This has to be done to cope with apparent bugs in the Ribbon controls.
            get => this.MyCollectionView.CurrentItem;
            set => this.MyCollectionView.MoveCurrentTo(value);
        }

以上内容将在 UI 的一个方向上起作用,需要添加额外的代码来处理 ICollectionView 以编程方式更改 CurrentItem 并引发 PropertyChanged 事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 2011-02-06
    • 1970-01-01
    相关资源
    最近更新 更多