2012-02-27 12 views
0

現在、データグリッド内でバインディングを実行しようとしていますが、ビューのレベルがDataContextになっています。ここでDataTemplateでのDataGridバインド

コードです:

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

いただきました!間違って上の任意のアイデアは? ViewのViewModelはコードの後ろに接続されています。

EDIT:あなたはそれが正しく解決されませんようDataGridDataTemplateは、あなたがElementNameバインディングを使用することはできません使用すると、そのバインディング機能していませんが原因解決能力の限界に

+0

私の答えを見るhttp://stackoverflow.com/questions/9319662/how-do-i-bind-a-datagridcomboboxcolumn-to-entityframework-using-mvvm/9376563#9376563 – Phil

答えて

3

上に示したバインディングItemsSourceですDataGridコントロール階層内のFindControlRelativeSourceバインディングを使用してコントロールツリーを移動し、特定のコントロールタイプ()を探します。これは、要素名がDataGridで、祖先タイプがであると仮定していました。

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

は、コンボボックスItemsSourceを移入するUserControlホストのDataContextにアクセスするためにMVVMを使用して、いくつかの潜在的に関連するサンプルコードを共有するthis SO postを参照してください。

+3

お時間をいただきありがとうございましたなぜ私のコードがうまくいかなかったのですか?あなたのソリューションは役に立ちました。ありがとう! – user1145927

関連する問題