gpt4 book ai didi

c# - GridView 组合框数据绑定(bind) WPF

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

我在使用 WPF XAML 中的 DataGrid 内部的 Combobox 进行数据绑定(bind)时遇到了一些问题。

我有包含 ObservableCollection 的信号类。

public struct RawVal
{
public string name; //Name of the Value
public int value; // Value
}


public class Signal
{
public string Name { get; set; }
public Int32 Value { get; set; }
public ObservableCollection<RawVal> rawValue { get; set; }
};

在 Stettings 窗口中有

public partial class Settings : Window
{
public ObservableCollection<Signal> tempSigList { get; set; }
public ObservableCollection<RawVal> tempRawVal { get; set; }
.........
.........
this.grdSignal.ItemsSource = tempSigList;

我的 XAML 如下所示:

<DataGrid ItemsSource="{Binding}" Name="grdSignal">
<DataGrid.Columns>
<DataGridTemplateColumn Header=" RAW Value ">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding tempRawVal }" SelectedItem="Binding name" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

但是没有任何结果ㅠㅠㅠ我在 stackoverflow 上尝试了很多示例,但没有任何结果。欢迎任何建议或解决方案。谢谢

最佳答案

这里:

窗口:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
tempSigList = new ObservableCollection<Signal>();
tempSigList.Add(new Signal { Name = "Name 1", Value = 1, rawValue = new ObservableCollection<RawVal> { new RawVal { name = "combo 1", value = 1 }, new RawVal { name = "combo 2", value = 2 } } });
tempSigList.Add(new Signal { Name = "Name 2", Value = 2, rawValue = new ObservableCollection<RawVal> { new RawVal { name = "combo 3", value = 3 }, new RawVal { name = "combo 4", value = 4 } } });
tempSigList.Add(new Signal { Name = "Name 3", Value = 3, rawValue = new ObservableCollection<RawVal> { new RawVal { name = "combo 5", value = 5 }, new RawVal { name = "combo 6", value = 6 } } });
tempSigList.Add(new Signal { Name = "Name 4", Value = 4, rawValue = new ObservableCollection<RawVal> { new RawVal { name = "combo 7", value = 7 }, new RawVal { name = "combo 8", value = 8 } } });
tempSigList.Add(new Signal { Name = "Name 5", Value = 5, rawValue = new ObservableCollection<RawVal> { new RawVal { name = "combo 9", value = 9 }, new RawVal { name = "combo 10", value = 10 } } });

dataGrid1.ItemsSource = tempSigList;
}

XAML:

<DataGrid x:Name="dataGrid1" ItemsSource="{Binding}">
<DataGrid.Columns>
<DataGridTemplateColumn Header="RAW Value">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding rawValue}" SelectedItem="{Binding name}" DisplayMemberPath="name" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

enter image description here

我使用了 AutoGenerateColumns=true。您可以将其设置为 false 并且只显示您的 ComboBox 列。

enter image description here

关于c# - GridView 组合框数据绑定(bind) WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32599087/

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