c# - C# WPF - 数据绑定 DataGridComboboxColumn SelectedValueBinding
问题描述
我正在尝试将数据绑定到 DataGridComboBoxColumn。
我已经设法绑定 ItemsSource,但不会选择绑定的值,而是 ComboBox 没有选择任何内容。
数据网格:
<DataGrid x:Name="dg" ItemsSource="{Binding}" AutoGenerateColumns="false">
<DataGrid.Columns>
<DataGridComboBoxColumn Header="Name" SelectedValueBinding="{Binding name}" ItemsSource="{Binding Source={x:Static K:Material.loadedMaterials}}" DisplayMemberPath="name"/>
<DataGridTextColumn Header="Name2" Binding="{Binding name}"/>
</DataGrid.Columns>
</DataGrid>
材料等级:
public class Material {
public static List<Material> loadedMaterials;
static Material() {
loadedMaterials = new List<Material>();
loadedMaterials.Add(new Material("TEST1", "", ""));
loadedMaterials.Add(new Material("TEST2", "", ""));
loadedMaterials.Add(new Material("TEST3", "", ""));
}
public string name { get; set; }
public string name2 { get; set; }
public string name3 { get; set; }
public Material(string n, string n2, string n3) {
name = n;
name2 = n2;
name3 = n3;
}
}
主窗口:
public partial class MainWindow : Window {
public System.Collections.ObjectModel.ObservableCollection<Material> mat;
public MainWindow() {
InitializeComponent();
mat = new System.Collections.ObjectModel.ObservableCollection<Material>();
mat.Add(new Material("TEST1", "TEST1", "TEST1"));
dg.DataContext = mat;
}
}
正如您在此处看到的,DropDown 已加载,并且具有相同数据绑定的 Textbox 正确显示它,但 ComboBox 为空。
我期待TEST1
被选中并显示在 ComboBox 中。
解决方案
你必须设置SelectedValuePath
你的DataGridComboBoxColumn
<DataGridComboBoxColumn Header="Name" SelectedValueBinding="{Binding name}" ItemsSource="{Binding Source={x:Static K:Material.loadedMaterials}}" DisplayMemberPath="name" SelectedValuePath="name"/>
推荐阅读
- xamarin - 使用 Microsoft 应用中心从 VS2019 Xamarin.Forms 项目与 Mac 配对?
- sas - 所有带前缀的值的条件逻辑
- javascript - 如何使用 Mapbox-gl-js 中的 queryRenderedFeatures 访问像素坐标?
- javascript - 悬停菜单项
- macos - 在 MacOS 上安装 horovod
- c# - Include 中使用的 Lambda 表达式无效。包括不工作
- javascript - 如何使用 styled-components 和 React 有效地为组件添加变体
- python - 计算具有相同长度的两个数据帧的 RMSE
- python - 如何更改 matplotlib 工具栏的平移和缩放按钮的模式
- php - Laravel 同时使用 2 个 api 级别,彼此分开