RibbonComboBox doesn't update SelectedValue
本文关键字:update SelectedValue doesn RibbonComboBox | 更新日期: 2023-09-27 18:15:44
我有一个ribbon组合框(MS ribbon开源项目,.Net 4.0),它是数据绑定到我的视图模型的属性,像这样:
XAML :
<ribbon:RibbonComboBox SelectionBoxWidth="130" Margin="3,0">
<ribbon:RibbonGallery
SelectedValue="{Binding Source={StaticResource ViewModel},
Path=Document, Converter={StaticResource DocumentToDocumentNameConverter}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<ribbon:RibbonGalleryCategory
ItemsSource="{Binding Source={StaticResource ViewModel},
Path=Documents, Converter={StaticResource DocumentToDocumentNamesConverter}}">
</ribbon:RibbonGalleryCategory>
</ribbon:RibbonGallery>
</ribbon:RibbonComboBox>
ViewModel :
public ViewModel {
#region Fields
private TestDocument _Document;
#endregion
#region Properties
public TestDocument Document
{
get
{
return ModelClass.SelectedDocument;
}
set
{
if (value != null && value != _Document)
{
_Document = value;
OnPropertyChanged("Document");
}
}
}
#endregion
}
效果很好,如果我在ComboBox中选择另一个值,则转换器将输入该值显示。
但是如果我像这样在ViewModel中设置属性
Document = new TestDocument("DocumentName");
组合框不显示选中的名称。
你有什么建议吗?我甚至试图绑定SelectedItem而不是SelectedValue,但这并不能解决问题。我忘了什么吗?
问题是您的SelectedItem
/值不是RibbonComboBox
的ItemSource
的一部分。因此,当设置时,它没有任何效果。
您需要做的是首先将新项目添加到ObservableCollection<TestDocument> Documents
,然后设置Document
。
类似:
Documents.Add(new TestDocument("DocumentName"));
Document = Documents[Documents.Count - 1];
或
var newDocument = new TestDocument("DocumentName");
Documents.Add(newDocument);
Document = newDocument;