Я взял пример кода из http://sweux.com/blogs/smoura/index.php/wpf/2009/06/15/wpf-toolkit-datagrid-part-iv-templatecolumns-and-row-grouping/, который обеспечивает группирование данных в WPF DataGrid. Я модифицирую пример, чтобы использовать DataTable вместо коллекции сущностей.
Моя проблема заключается в переводе объявления привязки {Binding Parent.IsExpanded}, которое отлично работает, когда Parent является ссылкой на объект, имеющий атрибут IsExpanded, на что-то, что будет работать для моего слабо типизированного DataTable, где Parent - имя столбца и ссылается на другой DataRow в том же DataTable. Я пробовал объявления типа {Binding Parent.Items [IsExpanded]} и {Binding Parent ("IsExpanded")}, но ни один из них, похоже, не работает.
Как создать привязку к столбцу IsExpanded родительского элемента DataRow в моей таблице данных?
Заранее спасибо,
Dave
РЕДАКТИРОВАТЬ: я создал пример кода для общего случая этой проблемы:
Window1.xaml:
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:WpfToolkit="http://schemas.microsoft.com/wpf/2008/toolkit"
Title="Window1" Height="300" Width="300">
<Grid>
<WpfToolkit:DataGrid
Name="dgSampleData"
ItemsSource="{Binding}"
AutoGenerateColumns="True"
Margin="0,75,0,0">
<WpfToolkit:DataGrid.Columns>
<WpfToolkit:DataGridTextColumn
Header="Bound Data"
Binding="{Binding Col3.Item(0)}"
/>
</WpfToolkit:DataGrid.Columns>
</WpfToolkit:DataGrid>
</Grid>
</Window>
Window1.xaml.vb:
Imports System.Data
Class Window1
Private Sub Window1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
Dim dtSampleData As New DataTable
dtSampleData.Columns.Add("Col1")
dtSampleData.Columns.Add("Col2")
dtSampleData.Columns.Add("Col3")
dtSampleData.Rows.Add(dtSampleData.NewRow())
dtSampleData.Rows.Add(dtSampleData.NewRow())
dtSampleData.Rows(0).Item(0) = "r1c1"
dtSampleData.Rows(0).Item(1) = "r1c2"
dtSampleData.Rows(0).Item(2) = dtSampleData.Rows(0)
dtSampleData.Rows(1).Item(0) = "r2c1"
dtSampleData.Rows(1).Item(1) = "r2c2"
dtSampleData.Rows(1).Item(2) = dtSampleData.Rows(0)
dgSampleData.DataContext = dtSampleData
End Sub
End Class
Я пытался использовать строку Binding = "{Binding Col3.Item (0)}", чтобы показать значение r1c1, но в содержимом ячейки ничего не появляется. Это почему? Разве Item (0) не должен быть просто другим свойством Col3?