2009-11-16 91 views
0

我有一個數據網格,看起來像這樣如何使用WPF Toolkit Datagrid DataGridTemplateColumn和一個組合框?

<tk:DataGrid ItemsSource="{Binding Parents}" AutoGenerateColumns="False"> 
       <tk:DataGrid.Columns> 
       <tk:DataGridTextColumn Header="Description" Binding="{Binding ID}" /> 

       <tk:DataGridTemplateColumn Header="Description" > 
        <tk:DataGridTemplateColumn.CellEditingTemplate> 
         <DataTemplate> 
          <TextBox Text="{Binding Path=Description, Mode=TwoWay}" /> 
         </DataTemplate> 
        </tk:DataGridTemplateColumn.CellEditingTemplate> 
        <tk:DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding Path=Description}"/> 
         </DataTemplate> 
        </tk:DataGridTemplateColumn.CellTemplate> 
       </tk:DataGridTemplateColumn> 

       <tk:DataGridTemplateColumn Header="Child Description" > 
        <tk:DataGridTemplateColumn.CellEditingTemplate> 
         <DataTemplate> 
          <ComboBox SelectedIndex="{Binding Path=ChildID}" ItemsSource="{Binding Path=Children}" /> 
         </DataTemplate> 
        </tk:DataGridTemplateColumn.CellEditingTemplate> 
        <tk:DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding Path=Children.Description}"/> 
         </DataTemplate> 
        </tk:DataGridTemplateColumn.CellTemplate> 
       </tk:DataGridTemplateColumn> 
      </tk:DataGrid.Columns> 
     </tk:DataGrid> 

的觀點勢必暴露父母這應該是我行,這應該是組合框下拉菜單內容的兒童名單列表的視圖模型。它的設置方式是獲得我父母的行,但在「子女說明」列中沒有數據。當我雙擊該行變爲可編輯,組合框出現。但沒有數據。當我查看輸出窗口時,看到綁定錯誤說出「BindingExpression路徑錯誤:'在'object'''Parent''上找不到'Children'屬性。我知道......我如何告訴它查找一個級別?我已經嘗試將datagrid綁定到viewmodel,但沒有顯示出行。我嘗試過使用relativesource標記,但仍然無法看到我想要看到的內容。我確定我的語法不正確。我找不到任何例子。我究竟做錯了什麼?

回答

1

可能有更聰明的方法來完成這個任務,但我會使用的愚蠢,快速的方法是修改Parent對象以包含Children集合。這會使Parent和Child的關係顯式化,並且不必從上面更改xaml語法。

如果你不想一個孩子集合添加到您的父對象,你可以使用下面的XAML綁定::

ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, 
AncestorType={x:Type tk:DataGrid}}, 
Path=DataContext.Children}" 
+0

的問題是,這是我希望它依賴於該行的值。看看這裏:http://stackoverflow.com/questions/3203416/accessing-control-between-datagridcells-dynamic-cascading-comboboxes – Shimmy

相關問題