【发布时间】:2011-07-25 14:01:39
【问题描述】:
我有一个包含两列的 DataTable,我将绑定到 DataGridComboBoxColumn 的所有 ComboBoxes,其中一列是项目的文本,另一列是项目的值。
我知道名为“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; }
}
}
【问题讨论】:
标签: wpf binding wpfdatagrid