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 はオブジェクトの名前です。列であり、同じ DataTable 内の別の DataRow を参照しています。{Binding Parent.Items[IsExpanded]} や {Binding Parent("IsExpanded")} などの宣言を試しましたが、どれも機能していないようです。
DataTable の DataRow Parent の IsExpanded 列へのバインドを作成するにはどうすればよいですか?
前もって感謝します、デイブ
編集:この問題の一般的なケースのサンプルコードをいくつか作成しました:
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 のもう 1 つのプロパティであるべきではありませんか?