Как показать заголовки сгруппированных элементов в столбце datagridtemplatecolumn с помощью сгруппированного combobox
У меня есть DataGridTemplateColumn с сгруппированным combobox. Combobox имеет в качестве ItemSource ListCollectionView с двумя полями: TipoBienes_ID и Bienes_ID.
То, что я хочу, это просто, комбо в столбце datagrid, которое позволяет мне выбрать один Bienes_ID, но группирует по TipoBienes_ID следующим образом:
TipoBienes_ID1
Bienes_ID1
Bienes_ID2
TipoBienes_ID2
Bienes_ID3
Bienes_ID4
Мне удалось просмотреть элементы, правильно сгруппированные, выбрать тот, который я хочу, но вместо заголовков появляется светло-синее пространство (как и должно быть, но без текста заголовка). Я знаю, что у меня есть проблема с привязкой, но не могу ее найти. Я уверен, что это простая вещь, которую я упускаю. Я связываю datagrid в коде (см. ниже) и combobox в столбце datagridtemplatecolumn со свойством в главном окне.
Вот мой HTML код:
<DataGrid Grid.Row="1" Name="DetalleFactura" AutoGenerateColumns="False" > <DataGrid.Columns > <DataGridTemplateColumn x:Name="ColumnaCombo"> <DataGridTemplateColumn.CellTemplate > <DataTemplate > <TextBlock Text="{Binding Path=Bienes_ID}"></TextBlock> </DataTemplate> </DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellEditingTemplate > <DataTemplate > <ComboBox x:Name="ComboBienesAgrupados" SelectedValuePath="Bienes_ID" ItemsSource="{Binding Path=ListaBienes, RelativeSource={RelativeSource AncestorType=Window}}" SelectedValue="{Binding Bienes_ID}" > <ComboBox.GroupStyle > <GroupStyle> <GroupStyle.HeaderTemplate > <DataTemplate > <TextBox Text="{Binding TipoBienes_ID}" Background ="AliceBlue" ></TextBox> </DataTemplate> </GroupStyle.HeaderTemplate> </GroupStyle> </ComboBox.GroupStyle> <ComboBox.ItemTemplate > <DataTemplate > <TextBlock Text="{Binding Path=Bienes_ID}" ></TextBlock> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox> </DataTemplate> </DataGridTemplateColumn.CellEditingTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </DataGrid>
Вот та часть, которая заполняет datagrid и combo:
Public Class Bien Public Property Bienes_ID As String Public Property TipoBienes_ID As String End Class Public Class Bienes Inherits CatalogoWPF Sub New() MyBase.New(My.Settings.CadenaArchivo, "Select * from Bienes order by Bienes_ID", "Bienes") End Sub Public Property Bienes_ID As String Get Return ObtainField("Bienes_ID") End Get Set(value As String) SetField("Bienes_ID", value) End Set End Property Public Property TipoBienes_ID As String Get Return ObtainField("TipoBienes_ID") End Get Set(value As String) SetField("TipoBienes_ID", value) End Set End Property Function ObtieneListaAgrupada() As ListCollectionView Dim Lista As New List(Of Bien) Dim i As Integer Dim elemento As Bien Dim salida As ListCollectionView Navigate(PossibleDirections.FirstItem) For i = 0 To Count - 1 elemento = New Bien elemento.Bienes_ID = Bienes_ID elemento.TipoBienes_ID = TipoBienes_ID Lista.Add(elemento) Navigate(PossibleDirections.NextItem) Next salida = New ListCollectionView(Lista) salida.GroupDescriptions.Add(New PropertyGroupDescription("TipoBienes_ID")) Return salida End Function End Class
В окне, где находится datagrid, у меня есть этот код в загруженном событии:
Public Class frmCapturaFacturas Implements INotifyPropertyChanged Dim m_Proveedores As Proveedores Dim m_DetalleFacturas As DetalleFacturas Dim m_DetalleImpuestosFacturas As DetalleImpuestosFacturas Dim m_impuestosFacturas As DetalleImpuestosFacturas Dim m_impuestos As ImpuestosFacturas Dim m_marcas As Marcas Dim m_bienes As Bienes Dim m_tablaDetalle As DataTable Dim m_tablabienes As DataView Dim m_SubTotalFactura As Decimal Dim m_SubTotalImpuestos As Decimal Dim m_ListaBienes As ListCollectionView Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged Public Property ListaBienes As ListCollectionView Get Return m_ListaBienes End Get Set(value As ListCollectionView) m_ListaBienes = value End Set End Property Private Sub frmCapturaFacturas_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded m_bienes = New Bienes() ListaBienes = m_bienes.ObtieneListaAgrupada m_bienes.Dispose() m_DetalleFacturas = New DetalleFacturas m_tablaDetalle = m_DetalleFacturas.CreaTabla DetalleFactura.ItemsSource = m_tablaDetalle.DefaultView End Sub
Что я уже пробовал:
Я заменил Text= " {Binding Path=TipoBienes_ID}"на обычный текст=" hello", и в каждом заголовке появляется это слово. Также Я заменил текст="{путь привязки=TipoBienes_ID}" текст="{путь привязки=Bienes_ID}" и такой же пробел был показан.