C# UWP组合框SelectedValue不工作
我正在使用uwp和mvvm light在c#中编写一个DB管理应用程序,如果不打开组合框并先手动选择一个值,我就无法在组合框中显示默认的selectedValue 以下是我的看法:C# UWP组合框SelectedValue不工作,c#,combobox,mvvm-light,uwp-xaml,selectedvalue,C#,Combobox,Mvvm Light,Uwp Xaml,Selectedvalue,我正在使用uwp和mvvm light在c#中编写一个DB管理应用程序,如果不打开组合框并先手动选择一个值,我就无法在组合框中显示默认的selectedValue 以下是我的看法: <ComboBox x:Name="editCategory" Header="Category" ItemsSource="{Binding Categories}" SelectedValue="{Binding CategoryCode, Mode=TwoWay}" SelectedValuePath="
<ComboBox x:Name="editCategory" Header="Category" ItemsSource="{Binding Categories}" SelectedValue="{Binding CategoryCode, Mode=TwoWay}" SelectedValuePath="Code" DisplayMemberPath="Name"/>
我可以在打开组合框时显示不同的值,当我选择一个值时,它会在组合框关闭时正确显示
我知道绑定正在工作,因为如果我在ViewModel的CategoryCode的setter中设置断点,它将显示正确的更新值
问题是,当我加载页面时,当它应该显示Category.Code=CategoryCode的项目的Category.Name时,默认值没有被选中
如果可以的话,请帮助我,我已经搜索了几个小时了,到目前为止我找不到任何帮助我相信在加载表单/控件之前,您需要将
SelectedItem
或SelectedValue
设置为正确的加载变量。但是SelectedItem将返回整个类别,而SelectedValue应该只返回Code属性。这就是SelectedValue和SelectedValuepath的要点,至少我是这样理解的,CategoryCode变量值在加载页面之前加载了所需的数据吗?如果不是,则在加载控件/窗体之前,您不会触发页面查看该控件/窗体。谢谢!我在页面加载完毕后加载变量。我将调用移动到viewmodel构造函数,现在它可以正常工作了:D
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; }
}