我有一个带有两个Columns的DataTable,它将绑定到DataGridComboBoxColumn的所有ComboBox,其中一个列将是Items的Text,另一个将是Items的值。
我知道名为'DisplayMemberPath'的属性是指定列的名称为Item的文本,以及必须在'SelectedValuePath'属性中指定的值。
但是再次将DataGridComboBoxColumn绑定到什么是一个问题,因为它无法访问DataGrid的DataContext。
那么我如何将DataTable设置为DataGridComboBoxColum的ItemsSource?
我希望在Code Behind中使用的示例:
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>
这是我的Code Behind代码:
public class TestClass
{
public TestClass()
{
(...)
//Here i am loading my DataTable
}
private static DataTable dt;
public static DataTable Dt
{
get { return dt; }
}
}
答案 0 :(得分:3)
无论哪种,
A.exlicity将ComboBox的DataContext
设置为您的DataTable,OR
B.如果DataTable是绑定到DataGrid的对象的某个部分,请在ComboBox绑定中使用RelativeSource
。
如果您需要针对这些方案的特定帮助,则需要发布代码。