我有一个包含两列的 DataTable,我将它们绑定到 DataGridComboBoxColumn 的所有组合框,其中一列将是项目的文本,其他列将是项目的值。
我知道名为“DisplayMemberPath”的属性是我将列的名称指定为项目文本的位置,并且必须在“SelectedValuePath”属性中指定它的值。
但是,将任何内容绑定到 DataGridComboBoxColumn 又会出现问题,因为它无法访问 DataGrid 的 DataContext。
那么我如何将 DataTable 设置为 DataGridComboBoxColum 的 ItemsSource ?
我想要的代码在隐藏代码中起作用的示例:
TestClass test = new TestClass();
dataGrid.Columns.Add(new DataGridComboBoxColumn()
{
Header = "City",
DisplayMemberPath = "Cities",
SelectedValuePath = "ID",
ItemsSource = test.Dt.DefaultView,
});
这是我的 XAML 代码:
<Window x:Class="WpfApp3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApp3
Title="MainWindow" Height="350" Width="600">
<Grid Name="grid1">
<DataGrid Name="dataGrid" AutoGenerateColumns="False" MinColumnWidth="100">
<DataGrid.Columns>
<DataGridComboBoxColumn Header="City" DisplayMemberPath="Cities" SelectedValuePath="ID" ItemsSource="{Binding local:TestClass.Dt}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
这是我的代码隐藏代码:
public class TestClass
{
public TestClass()
{
(...)
//Here i am loading my DataTable
}
private static DataTable dt;
public static DataTable Dt
{
get { return dt; }
}
}