我要在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已更改。
答案 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事件。