【发布时间】:2021-01-24 01:51:17
【问题描述】:
我在 WPF 中工作,并且有一个视图模型 ModifiedReasonViewModel,它是我用于 XAML 视图的 DataContext。 ComboBox 不显示我在调试时可以在数据上下文中看到的 4 项中的任何一项。我认为这肯定与我异步提取原因标签的事实有关。有关如何解决此问题的任何想法?
当我仅使用在构造函数中初始化的测试字符串列表测试此代码时,它按预期工作。
这是我目前在 XAML 中使用的 RadComboBox:
d:DataContext="{d:DesignInstance Type=vm:ATMModifiedReasonViewModel, IsDesignTimeCreatable=True}">
<telerik:RadComboBox Name="ReasonCmbo"
ItemsSource="{Binding ReasonLabels}"
DisplayMemberPath="Name"
IsEditable="False"
Margin="2"
Grid.Column="1"
Grid.Row="1"
Grid.ColumnSpan="2">
</telerik:RadComboBox>
这是我正在使用的 ViewModel 代码:
public class ATMModifiedReasonViewModel : INotifyPropertyChanged
{
private List<LabelFileModel> _reasonLabels;
public List<LabelFileModel> ReasonLabels { get { return _reasonLabels; } set { _reasonLabels = value; } }
public ATMModifiedReasonViewModel(){
GetReasonLabels();
}
public void GetReasonLabels()
{
LabelFileProvider lfProvider = new LabelFileProvider();
LabelFileModelFilter filter = new LabelFileModelFilter() {LabelDefinition = "ModifiedReason"};
lfProvider.GetFiltered(filter,10, getResult => GetReasonLabelsCallback(getResult));
}
private void GetReasonLabelsCallback(Func<IEnumerable<LabelFileModel>> getResult)
{
try
{
_reasonLabels = (List<LabelFileModel>) getResult();
}
catch (Exception ex)
{
Messenger.Default.Send(new UnhandledExceptionMessage(this, ex));
}
}
}
非常感谢您的帮助!
【问题讨论】:
-
将属性绑定到View的控件时,ViewModel需要实现INotifyPropertyChanged,以便通知View任何属性值的变化
-
我之前实现过。我已将其重新添加,但运气不佳。
-
经过一些测试,似乎实例化列表然后向其中添加项目允许视图解释更改并显示新项目?这看起来有可能吗?
标签: c# wpf xaml silverlight telerik