2012-05-03 70 views
3

我有一個ItemsControl定義如下所示。基本上,我有一個編輯列表(EditorList),我想要每個超鏈接。但是,我的打開命令(OpenEditorCommand)屬性與編輯列表處於同一級別。當上下文設置爲列表中的項目時,如何引用該屬性。我已經嘗試使用RelativeSource方法,但對於我來說理解起來太複雜了。我在正確的軌道上嗎?如何綁定祖先數據上下文中的屬性?

<ItemsControl ItemsSource="{Binding EditorList}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
     <TextBlock Margin="2,6" HorizontalAlignment="Center"> 
      <Hyperlink Command="{Binding RelativeSource={RelativeSource AncestorType=ItemsControl, AncestorLevel=2, Mode=FindAncestor}, Path=OpenEditorCommand}" CommandParameter="{Binding Name}"> 
       <StackPanel> 
        <Image Source="{Binding Image}" Width=32/> 
        <TextBlock Text="{Binding Path=Name}"/> 
       </StackPanel> 
      </Hyperlink> 
     </TextBlock> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 
+2

如下圖所示? –

+0

網站無法正常工作,或者我的瀏覽器需要更新,因爲我沒有看到代碼格式按鈕。讓我試試不同的電腦。 – bsh152s

回答

4

你只需要設置的情況下,AncestorLevel那裏有可能存在的元素樹搜索類型的不止一個祖先。默認值是1,表示找到最接近的。

但你需要在要綁定到OpenEditorCommandItemsControlDataContextPath指定:

Command="{Binding Path=DataContext.OpenEditorCommand, RelativeSource={RelativeSource AncestorType=ItemsControl, Mode=FindAncestor}}" 
+0

這樣做了......忘了「DataContext」。在路徑中。謝謝。 – bsh152s