2012-02-27 75 views
0

我目前正試圖做一些綁定內部的數據網格,但我有問題達到視圖的DataContext的水平。在DataTemplate DataGrid綁定

下面是代碼:

<DataGridTemplateColumn.CellEditingTemplate> 
<DataTemplate> 
<ComboBox SelectedItem="{Binding Operators}" 
ItemsSource="{Binding DataContext.OperatorList,ElementName=FilterGrid}" /> 
</DataTemplate> 
</DataGridTemplateColumn.CellEditingTemplate> 

上什麼是錯的任何想法? View的Viewmodel連接在後面的代碼中。

編輯:綁定不工作超過

+0

看到這裏http://stackoverflow.com/questions/9319662/how-do-i-bind-a-datagridcomboboxcolumn-to-entityframework-using-mvvm/9376563#9376563 – Phil 2012-02-27 22:57:46

回答

3

綁定所示的ItemsSource當您使用DataGridDataTemplate,您不能使用ElementName綁定,因爲它不會妥善解決由於分辨能力的限制DataGrid控件層次結構中的FindControl。你需要使用一個RelativeSource綁定,它沿着控制樹上行,尋找一個特定的控制類型(,你需要確定 - 從你的元素名稱我認爲它是一個DataGrid祖先類型)。

<DataGridTemplateColumn.CellEditingTemplate> 
    <DataTemplate> 
    <ComboBox 
     SelectedItem="{Binding Operators}" 
     ItemsSource="{Binding DataContext.OperatorList, 
         RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" 
     /> 
    </DataTemplate> 
</DataGridTemplateColumn.CellEditingTemplate> 

this SO post共享使用MVVM訪問UserControl主機的DataContext填充ComboBox ItemsSource一些潛在的相關示例代碼。

+3

感謝你的時間,並解釋我的回答爲什麼我的代碼不起作用。你的解決方案確實如此,你一直非常樂於助人謝謝! – user1145927 2012-02-28 16:09:01