Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UWP组合框SelectedValue不工作_C#_Combobox_Mvvm Light_Uwp Xaml_Selectedvalue - Fatal编程技术网

C# UWP组合框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="

我正在使用uwp和mvvm light在c#中编写一个DB管理应用程序,如果不打开组合框并先手动选择一个值,我就无法在组合框中显示默认的selectedValue

以下是我的看法:

<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; }
    }