gpt4 book ai didi

wpf - 如何使用 MVVM 将数据绑定(bind)到 DataGrid 中的 DataGridComboBoxColumn

转载 作者:行者123 更新时间:2023-12-02 17:45:03 29 4
gpt4 key购买 nike

这让我发疯。我有一个 DataGrid,其中有一个 DataGridComboBoxColumn,我希望用户能够使用它进行选择。这是我的网格的基本轮廓。

<DataGrid ItemsSource="{Binding GoalList}" DockPanel.Dock="Bottom" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridComboBoxColumn ItemsSource="{Binding LifeAreaList}" Header="Life Area"/>
<DataGrid.Columns>
</DataGrid>

DataGrid 绑定(bind)到 Goal 类型的对象集合。每个目标都有一个 LifeArea 类型的属性。每个 LifeArea 都有属性 LifeAreaId 和 Name。

数据上下文包含可观察的目标集合:GoalList 和生活领域列表:LifeAreaList。我希望用户能够为目标选择不同的生活领域。另外,生活区的名称也需要是显示的值。

编辑

<小时/>

解决方案是 DataGridComboBoxColumn 的 ItemsSource 必须设置为静态资源。另一种选择是通过代码设置 ItemsSource。

最后我有:

<DataGridComboBoxColumn x:Name="_lifeAreaComboBoxColumn" SelectedItemBinding="{Binding LifeArea}" DisplayMemberPath="Name" Header="Life Area">

在后面的代码中我设置了 ItemsSource:

_lifeAreaComboBoxColumn.ItemsSource = LifeAreaDAL.GetLifeAreas();

当我有机会时,我会将其转换为 StaticResource。

最佳答案

你需要做这样的事情(不要射击信使):

<DataGridComboBoxColumn Header="Life Area" SelectedItemBinding="{Binding SelectedLifeArea}">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding LifeAreaList}"/>
<Setter Property="IsReadOnly" Value="True"/>
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding LifeAreaList}"/>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>

关于wpf - 如何使用 MVVM 将数据绑定(bind)到 DataGrid 中的 DataGridComboBoxColumn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3563325/

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