如何使RibbonComboBox与ICollectionView.CurrentItem同步

时间:2019-04-29 15:09:19

标签: c# wpf

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

我尝试在ComboBox中的RibbonGallery上设置IsSynchronizedWithCurrentItem =“ True”,但这不会同步CollectionView。

<script>
var data = {
    "test": [
                {
                    "cpu_count": 4,
                    "memory_size_MiB": 6144,
                    "power_state": "POWERED_ON",
                    "vm": "vm-1173"
                },
                {
                    "cpu_count": 8,
                    "memory_size_MiB": 2048,
                    "power_state": "POWERED_ON",
                    "vm": "vm-1173"
                }
    ]
}


for(var key in data) {
  var value = data[key];
  console.log(key)

}
</script>

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

1 个答案:

答案 0 :(得分:0)

我能找到的唯一解决方案是在View模型中使用可以绑定的单独属性来复制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事件。