2010-04-15 73 views
1

我已經從http://sweux.com/blogs/smoura/index.php/wpf/2009/06/15/wpf-toolkit-datagrid-part-iv-templatecolumns-and-row-grouping/採取了一些示例代碼,它提供了WPF DataGrid中的數據分組。我正在修改示例以使用DataTable而不是實體集合。WPF綁定到DataRow列

我的問題是在翻譯一個綁定聲明{綁定Parent.IsExpanded},它工作正常,其中父是對具有IsExpanded屬性的實體的引用,以適用於我的弱類型DataTable,其中父是列的名稱並引用同一DataTable中的另一個DataRow。我嘗試過{Binding Parent.Items [IsExpanded]}和{Binding Parent(「IsExpanded」)}這樣的聲明,但這些都不起作用。

如何在我的DataTable中創建綁定到DataRow父級的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 Co l3.Item(0)}「顯示值r1c1,但沒有任何內容出現在單元格中。這是爲什麼?不應該項目(0)只是Col3的另一個屬性?

回答

1

此綁定表達式將綁定到名爲IsExpanded的DataTable屬性上名爲BindingDataTable的對象被設置爲視圖DataContext。

<CheckBox IsChecked="{Binding BindingDataTable.(Rows)[0][IsExpanded]}" 
      Content="Test"></CheckBox> 

但是我明確指定了DataTable的第一行([0])。我之前沒有使用WPF DataGrid,所以我不確定在這一點上如何獲取當前綁定的行索引...我會看看我可以制定和更新如果找到。

+0

謝謝你這個西蒙。每行都有一個名爲Parent的列,它是對DataTable中其他行之一的引用。這有幫助嗎? – Trindaz 2010-04-15 03:09:08

+0

@Trindaz你想要將Parent.IsExpandable值綁定到什麼?通過綁定屬性的某種類型的'DataGridColumn'? – 2010-04-15 04:29:29