У меня есть окно с 2 элементами управления. Один - это комбинированный список (cmbUnit)
, а другой - DataGrid (dgvProducts)
cmbUnits
, связанный с коллекцией List<Unit>
, а класс Unit
ниже
public class Unit
{
public int ID { get; set; }
public string Name { get; set; }
}
Примечание. Отображаемым элементом является имя, а значением - идентификатор.
Где, как, dgvProducts
связан с List<Product>
Коллекция и Product
класс ниже
public class Product
{
public int ID { get; set; }
public string ProductName { get; set; }
public int UnitID { get; set; }
}
Здесь я выбираю UnitID
из моей таблицы БД (TBL_PRODUCTS)
, я также могу получить UnitName
, присоединившись к таблице. на данный момент я хочу оставить только UnitID
в своем классе Product
.
Мой вопрос состоит в том, что у моей таблицы данных есть столбец (datagridTemplateColumn)
со списком в качестве дочернего элемента, и я хочу показать UnitName
внутри него, передав UnitID
то же, что и мой элемент управления списком (cmbUnit)
Мои данные внутри сетки данных должны быть
--------------------------------------------------
ID UnitName ProductName
--------------------------------------------------
12345 Kg Sample Product
Где Kg
должно быть отображается внутри комбинированного списка. Как этого добиться? Помогите мне!
Мой код XAML для cmbUnit
-
<ComboBox Grid.Column="7" Grid.Row="1" Name="cmbUnit" ></ComboBox>
, где я привязываю данные к этому элементу управления из кода позади.
XAML для dgvProducts
<DataGrid AutoGenerateColumns="False" Grid.ColumnSpan="2"
Name="dgvProduct"
Grid.Row="2">
<DataGrid.Columns>
<DataGridTemplateColumn Header="ID" Width="50" CanUserSort="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label VerticalContentAlignment="Center" Content="{Binding ID}"></Label>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Unit" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox IsEnabled="False"
Name="cmbGrUnit"
ItemsSource="{Binding Units}"
DisplayMemberPath="Name"
SelectedValuePath="ID"
SelectedValue="{Binding UnitID}"
></ComboBox>
<!--<Label VerticalContentAlignment="Center" Content="{Binding Name}"></Label>-->
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Product Name" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label VerticalContentAlignment="Center" Content="{Binding ProductName}"></Label>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn></DataGrid.Columns>
Спасибо