2012-07-16 73 views
1

我有這樣訪問的DataContext

<Grid> 
<Grid.DataContext> 
    <bin:ItemsCollViewModel/> 
</Grid.DataContext> 
<controls:Pivot ItemsSource="{Binding Items}"> 
    <controls:Pivot.HeaderTemplate> 
     <DataTemplate> 
      <Grid> 
       <TextBlock Text="{Binding ItemName}" />        
       <toolkit:ContextMenuService.ContextMenu> 
        <toolkit:ContextMenu > 
         <toolkit:ContextMenu.Items>           
          <toolkit:MenuItem Header="Remove" /> 
         </toolkit:ContextMenu.Items> 
        </toolkit:ContextMenu> 
       </toolkit:ContextMenuService.ContextMenu> 
      </Grid> 
     </DataTemplate> 
    </controls:Pivot.HeaderTemplate> 
    <controls:Pivot.ItemTemplate> 
     .... 
    </controls:Pivot.ItemTemplate> 
</controls:Pivot> 

我需要在我的視圖模型上下文菜單項到一個ICommand財產(說TryRemove)命令屬性綁定的XAML (ItemsCollViewModel)。此TryRemove屬於ItemsCollViewModel。但它的父的DataContext的(透視)是物品這在ItemsCollViewModel的性質。那麼如何將此上下文菜單項的命令屬性綁定到其父(數據透視表)父(網格)的屬性。

簡而言之,我如何訪問控件的Parent's Parent的datacontext。 我得到這個How to change the DataContext of a button to the parents parent DataContext? 但編譯器無法找到AncestorType = {X:式格柵}

回答

0
<ContextMenu> 
       <MenuItem Command="{Binding DatContext.TryRemove, RelativeSource={RelativeSource AncestorType={x:Type Grid},AncestorLevel=1} }"/> 
      </ContextMenu> 

嘗試AncestorLevel也。我希望這將有助於。

+1

謝謝回答,但我在我的問題編譯器說找不到* * AncestorType = {x:Type Grid} **。我認爲它不適用於silverlight – 2012-07-17 04:22:15

0

在比亡羊補牢永遠的精神:

Name屬性添加到您的樞軸控件並執行以下操作: {Binding DataContext.TryRemove, ElementName=MyPivot}