У меня есть DataTable с двумя столбцами, которые я буду связывать со всеми ComboBoxами DataGridComboBoxColumn, где один из столбцов будет текстом элементов, а другой - значениями элементов.
Я знаю, что свойство 'DisplayMemberPath' - это то, где я указываю Имя столбца, который должен быть текстом Элементов, и значениям, которые должны быть указаны в свойстве SelectedValuePath.
Но еще раз проблема связать что-либо с DataGridComboBoxColumn, потому что он не может получить доступ к DataContext DataGrid.
Итак, как мне установить DataTable в качестве ItemsSource для DataGridComboBoxColum?
Пример, где то, что я хочу, работает в коде:
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; }
}
}