gpt4 book ai didi

c# - 手动设置组合框项目时如何使用mvvm中的绑定(bind)在wpf中设置组合框默认值

转载 作者:太空宇宙 更新时间:2023-11-03 22:45:42 25 4
gpt4 key购买 nike

我在 wpf 中使用 mvvm。我正在设置一个表单来更新用户数据。我有一个组合框来选择用户的性别。我在源代码中手动添加了组合框项目。加载数据以形成所有字段时,其他字段显示正确。但组合框没有显示任何内容。我使用了双向绑定(bind),我从表单中选择的值进入了 viewModel。我已经搜索了几个小时,发现了许多类似的问题,但对我来说没有任何效果。我在下面插入我的代码段。请给我一个解决方案。

<ComboBox 
Grid.Column="2"
SelectedItem="{Binding SelectedEmployees.gender, Mode=TwoWay}"
SelectedValue="{Binding SelectedEmployees.gender, Mode=TwoWay}"
>
<ComboBoxItem Content="Male"/>
<ComboBoxItem Content="Female"/>
</ComboBox>

我的viewModel代码如下

class EmployeesModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private iServiceClient serviceClient = new iServiceClient();
public EmployeesModel()
{
this.RefreshEmployees();
}

private void RefreshEmployees()
{
this.serviceClient.GetAllEmployeesCompleted += (s, e) =>
{
this.employees = e.Result;
};

this.serviceClient.GetAllEmployeesAsync();
}

private IEnumerable<Employee> employees;
public IEnumerable<Employee> Employees
{
get
{
return this.employees;
}
set
{
this.employees = value;
this.OnPropertyChanged("Employees");
}
}

private Employee selectedEmployees;
public Employee SelectedEmployees
{
get
{
return this.selectedEmployees;
}
set
{
this.selectedEmployees = value;
this.OnPropertyChanged("SelectedEmployees");
}
}

public void OnPropertyChanged(string PropertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));
}
}

}

和 SelectedEmployees 类是

public class Employee
{
[Key]
public int id { get; set; }
public DateTime JoiningDate { get; set; }
public string name { get; set; }
public string gender { get; set; }
public string mobile { get; set; }
public string post { get; set; }
public string salaryType { get; set; }
public decimal salary { get; set; }
public string docname { get; set; }
public int validit { get; set; }
}

最佳答案

我怀疑 SelectedEmployees.gender 不是 comboboxitem 类型。
采取直接在组合框中创建组合框项目的捷径是一个糟糕的举动。

当我这样做时:

    xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Window.DataContext>
<local:MainWIndowViewModel/>
</Window.DataContext>
<Window.Resources>
<x:Array Type="sys:String" x:Key="Genders">
<sys:String>Male</sys:String>
<sys:String>Female</sys:String>
</x:Array>
</Window.Resources>
<Grid>
<ComboBox
SelectedItem="{Binding gender, Mode=TwoWay}"
ItemsSource="{StaticResource Genders}"
/>
</Grid>

我在绑定(bind)的性别中得到一个字符串而不是一个组合框项。您可能想要更像那样的东西。

关于c# - 手动设置组合框项目时如何使用mvvm中的绑定(bind)在wpf中设置组合框默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50045539/

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