从集合绑定到 DataGridComboBoxColumn
-
19-09-2019 - |
题
尝试绑定到 WPF 中的集合,我得到了以下结果:
XAML:
<toolkit:DataGrid Name="dgPeoples"/>
CS:
namespace DataGrid
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1
{
private readonly ObservableCollection<Person> personList = new ObservableCollection<Person>();
public Window1()
{
InitializeComponent();
personList.Add(new Person("George", "Jung"));
personList.Add(new Person("Jim", "Jefferson"));
personList.Add(new Person("Amy", "Smith"));
dgPeoples.ItemsSource = personList;
}
}
}
可能没有必要,但这里是 Person 类:
namespace DataGrid
{
public class Person
{
public string fName { get; set; }
public string lName { get; set; }
public Person(string firstName, string lastName)
{
fName = firstName;
lName = lastName;
}
}
}
但我真正需要的是这个 数据网格组合框列 的。以下是我的修改:
XAML:
<toolkit:DataGrid Name="dgPeoples" Grid.Row="0" AutoGenerateColumns="False">
<toolkit:DataGrid.Columns>
<toolkit:DataGridComboBoxColumn Width="5*"/>
<toolkit:DataGridComboBoxColumn Width="5*"/>
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
C#:
保持不变。
问题 现在我得到了空的组合框列!我有什么想法可以让它发挥作用吗?
从长远来看,我需要两种方式绑定,其中双击名字列会弹出组合框,其中包含集合中所有可能的名字的选项(即乔治、吉姆和艾米)。
感谢任何帮助!
解决方案
我只是想,当涉及到WPF工具包Datagrid的给你指向的最佳参考之一,它来自的塞缪尔·莫拉我下载了15个样品,并妥善保管,我给你的链接,因为你会发现Datagrid的岗位大系列,比我任何参考更有用可以给你的快速答复
其他提示
DataGrid 需要具有 Header
和 ItemsSource
属性设置:
<toolkit:DataGrid Name="dgPeoples" Grid.Row="0" AutoGenerateColumns="False">
<toolkit:DataGrid.Columns>
<toolkit:DataGridComboBoxColumn Width="5*"
Header="First Name"
ItemsSource="{Binding Path=fName}"/>
<toolkit:DataGridComboBoxColumn Width="5*"
Header="First Name"
ItemsSource="{Binding Path=lName}"/>
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
使用该工具包时,该工具包的某个版本似乎存在问题 DataGridComboBoxColumn.ItemsSource
: DataGridComboBoxColumn.ItemsSource 不起作用.
然而,有一个解决方法是为 将组合框与 WPF DataGrid 结合使用. 。最后,你可能想看一下这篇文章 DataGrid 带来更多乐趣 玛格丽特·帕森斯也是如此。
编辑
现在我不太确定上面的代码是否有效。我凭记忆做到了这一点,并将其他链接作为资源引用。
看一下这个 SO 帖子,它似乎解决了这个问题: 绑定 DataGridComboBoxColumn.ItemsSource 时出现问题
不隶属于 StackOverflow