2011-01-26 12 views
2

私はFindAncestorとAncestorLevel = 3を使用して、viewModelリレーコマンドが必要なトップレベルのタグに到達していますが、動作しません。私がそれを間違ってやっている場合や、このシナリオをデバッグする方法を教えてください。WPFバインディングRelativeSourceの問題

<DataGridTemplateColumn.CellTemplate> 
          <DataTemplate> 
           <TextBlock Text="{Binding name}" Cursor="Hand" 
              Foreground="Blue" TextDecorations="Underline"> 
            <i:Interaction.Triggers> 
             <i:EventTrigger EventName="MouseDown"> 
              <cmd:EventToCommand Command="{Binding NameClickCommand, RelativeSource={RelativeSource FindAncestor, AncestorType=Grid, AncestorLevel=3}}" 
                   MustToggleIsEnabled="True" PassEventArgsToCommand="True"/> 
             </i:EventTrigger> 
            </i:Interaction.Triggers> 
           </TextBlock> 
          </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
+1

である場合

Command="{Binding Path=DataContext.NameClickCommand... 

にそれを変更しようとしません。ボール? – DHN

+0

ガラス球! :D – WhoIsNinja

+1

すぐにあなたのxamlを見てちょうど愚痴。これは、コマンドを 'Grid'の' NameClickCommand'というプロパティにバインドしているようです。 'Grid'はこのプロパティを持っていませんので、NameClickCommandがグリッドのDataContextにあれば、' Command = "{Binding Path = DataContext.NameClickCommand ...'に変更してみてください。 –

答えて

3

コマンドをGrid上のNameClickCommandというプロパティにバインドしているようです。グリッドは、この特性を持っているので、NameClickCommandは、いくつかの特定のコードについては、私たちは私たちのガラスを使用する必要はありませんどのようにグリッドのDataContextの

1

第3のGridを探しています - それはあなたが望むものですか?

Gridには、DataGridは含まれません。

+0

はい私はそれが3番目のレベルにあるグリッドであるxamlファイルの親の親を探しています。ルートを参照するショートカットはありますか?またはコンポーネントの名前で相対ソースを参照するショートカットはありますか? – WhoIsNinja

+0

このDatagridの同じレベルにボタンを追加し、そのコマンドをNameClickCommandに設定すると、 – WhoIsNinja

+0

@ 11000011 ' '...' {バインディングDataContext.NameClickCommand、ElementName = rootGrid} ' – Jay

関連する問題