WinUI 3, CommunityToolkit.WinUi, DataGridComboBoxColumn 存在Binding问题

问题描述 投票:0回答:0

在我的 ViewModel 类中,有一个名为 EmployeesList[ObservableProperty] ObservableCollection,

同样还有另一个[ObservableProperty]称为LeavesList类型ObservableCollection

两者都使用服务异步填充。

在我的页面中有一个绑定到 LeavesList 的 DataGrid (ItemsSource="{x:Bind viewModel.LeavesList}).

其中一列是 DataGridComboBoxColumn,代表员工的姓名。 像往常一样,DataGridComboBoxColumn 的 ItemsSource 绑定到员工列表。 DataGridComboBoxColumn 的值绑定到 Leave 的属性,即 EmployeeId,

确切的问题源于这样一个事实,即 Leave.EmployeeId 实际上是一个指向 Employee.Id 的 FK,但文档指出这些 必须 具有相同的名称才能使绑定工作。 文档

我不是为了取悦 XAML 前端而更改模型类。 所以我做的是一个肮脏和恶心的解决方案,即将 ObservableCollection 映射到一个新的 ObservableCollection 只是将主键名称重命名为 EmployeeId 而不是 Id 以匹配 Leave 模型类中的 FK。

使用 XALM 是否有更简洁的方法?或 ViewModel 中的 C# 或其他可重用的地方,没有临时对象和工作区?

<controls:DataGridComboBoxColumn Header="Employee Name" Binding="{Binding EmployeeId, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ItemsSource="{x:Bind viewModel.TempEmployeeListWithIdReWrittenToEmployeeIdJustToMatchLeave_EmployeeId, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="Name"  Tag="Employee Name" />

我需要规避要求: 列的 ItemsSource 元素必须至少有一个与属于 DataGrid 本身的 ItemsSource 元素同名的属性。(来自Docs

binding datagrid winui-3 windows-community-toolkit datagridcomboboxcolumn
© www.soinside.com 2019 - 2024. All rights reserved.