gpt4 book ai didi

Wpf组合框所选项目不起作用

转载 作者:行者123 更新时间:2023-12-04 21:36:56 24 4
gpt4 key购买 nike

我有两个对象:UserDto 和 RoleDto。用户有一个属性,即 RoleDto。在我的 View 模型中,我有以下内容:

public UserDto User
{
get { return _user; }
set
{
if (_user == value) return;

_user = value;
User.PropertyChanged += UserPropertyChanged;
OnPropertyChanged("User");
}
}
private UserDto _user;

public IEnumerable<RoleDto> Roles { get; set; } //I load all available roles in here

在 View 中,我想选择用户所属的角色。这就是我在 View 中定义组合框的方式:

<ComboBox Grid.Row="3" Grid.Column="1" Margin="5" ItemsSource="{Binding Roles}" SelectedItem="{Binding User.Role, Mode=TwoWay, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Description" />

如果我尝试创建一个新用户并从组合框中选择一个角色,它会正确绑定(bind)到该用户。问题是当我加载一个已经存在的用户时,该角色不会显示在组合框中(即使用户已经定义了角色)。

有什么帮助吗?

提前致谢

最佳答案

这是因为 RoleDTO 的引用你的UserDTO有,不匹配任何 RoleDTOsRoles您设置为 ItemsSource 的集合的 ComboBox .

最好在 ViewModel 上定义一个属性,例如

    public RoleDTO SelectedRole
{
get { return Roles.FirstOrDefault(role => role.Role == User.RoleDto.Role); }
set { User.RoleDto = value; OnPropertyChanged("SelectedRole"); }
}

并将其设置为您的组合框的 SelectedItem

ItemsSource="{Binding Roles}" SelectedItem="{Binding SelectedRole, Mode=TwoWay, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Description" />

关于Wpf组合框所选项目不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23628247/

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