我该如何设置SelectedItem
on a RibbonComboBox
using MVVM
图案?
View
<ribbon:RibbonComboBox>
<ribbon:RibbonGallery SelectedItem="{Binding Foobar, Mode=TwoWay}">
<ribbon:RibbonGalleryCategory ItemsSource="{Binding Foobars}" DisplayMemberPath="FoobarID" />
</ribbon:RibbonGallery>
</ribbon:RibbonComboBox>
视图模型
// Selected Item
private Foobar _foobar { get; set; }
public Foobar Foobar
{
get { return _foobar; }
set
{
if (value == _foobar || value == null)
return;
_foobar = value;
base.NotifyPropertyChanged("Foobar");
}
}
// Collection
private ObservableCollection<Foobar> _foobars = new ObservableCollection<Foobar>();
public ObservableCollection<Foobar> Foobars
{
get
{
return _foobars;
}
}
// Constructor
public FoobarViewModel(MyObject myObject)
{
LoadFoobars();
Foobar = myObject.Foobar;
}
// Method
private void LoadFoobars()
{
foreach (var foobar in _localRepository.GetFoobars())
{
this._foobars.Add(foobar);
}
}
Update
去除IsEditable="True"
确实将“Namespace.Foobar”放入RibbonComboBox
和改变SelectedItem
并添加SelectedValuePath
on the RibbonGallery
确实显示了正确的值,但是RibbonComboBox
有红色边框,所以我猜它没有经过验证(就像比较苹果和梨一样)。
<ribbon:RibbonComboBox>
<ribbon:RibbonGallery SelectedItem="{Binding Foobar.FoobarID, Mode=TwoWay}" SelectedValuePath="DisplayMemberPath">
<ribbon:RibbonGalleryCategory ItemsSource="{Binding Foobars}" DisplayMemberPath="FoobarID"/>
</ribbon:RibbonGallery>
</ribbon:RibbonComboBox>
我通过更改构造函数解决了这个问题。
// Constructor
public FoobarViewModel(MyObject myObject)
{
LoadFoobars();
Foobar = _repository.GetFoobar(myObject.FoobarID);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)