我正在使用uwp和mvvm-light在c#中编写一个数据库管理应用程序,如果不打开它并手动选择一个,我无法在我的组合框中显示默认的selectedValue。
以下是我的观点:
<ComboBox x:Name="editCategory" Header="Category" ItemsSource="{Binding Categories}" SelectedValue="{Binding CategoryCode, Mode=TwoWay}" SelectedValuePath="Code" DisplayMemberPath="Name"/>
这是我的ViewModel:
private ObservableCollection<Category> _categories;
public ObservableCollection<Category> Categories {
get { return _categories; }
set {
if (_categories == value)
return;
_categories = value;
RaisePropertyChanged("Categories");
}
}
private int _categoryCode;
public int CategoryCode {
get { return _categoryCode; }
set {
if (_categoryCode == value)
return;
_categoryCode = value;
RaisePropertyChanged("CategoryCode");
}
}
我的模特:
class Category
{
public int Code { get; set; }
[Required]
public string Name { get; set; }
}
我可以在打开组合框时显示不同的值,当我选择一个值时,它会在组合框关闭时正确显示。
我知道绑定工作正常,因为如果我在ViewModel的CategoryCode设置器中设置断点,它会显示正确的更新值。
问题是当我加载页面时,当它应该显示Category.Code = CategoryCode
的项目的Category.Name时,不会选择默认值。如果可以,请帮助我,我一直在寻找几个小时,到目前为止我找不到任何帮助我
答案 0 :(得分:0)
我相信在加载表单/控件之前,您需要将SelectedItem
或SelectedValue
设置为正确的加载变量。