gpt4 book ai didi

c# - RibbonComboBox 不更新 SelectedValue

转载 作者:行者123 更新时间:2023-11-30 17:53:50 26 4
gpt4 key购买 nike

我有一个功能区组合框(MS Ribbon OpenSource 项目,.Net 4.0),它是数据绑定(bind)到我的 View 模型的属性,如下所示:

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>

View 模型:

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");

ComboBox 不显示选定的名称。

您有什么建议吗?我什至尝试绑定(bind) SelectedItem 而不是 SelectedValue 但这并不能解决问题。我是不是忘记了什么?

最佳答案

问题是你的SelectedItem/值不是 ItemSource 的一部分的 RibbonComboBox .所以设置时没有任何作用。

您需要先将新项目添加到 ObservableCollection<TestDocument> Documents然后设置 Document .

类似于:

Documents.Add(new TestDocument("DocumentName"));
Document = Documents[Documents.Count - 1];

var newDocument = new TestDocument("DocumentName");
Documents.Add(newDocument);
Document = newDocument;

关于c# - RibbonComboBox 不更新 SelectedValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16772764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com