2009-11-20 56 views
1

我正在創建一個裝載裝飾器,其上有一個旋轉圖標。我嘗試直接在XAML中綁定可見性屬性,但實際上隱藏了其層次結構中的所有內容。以編程方式獲取WPF裝飾者可見性數據綁定

我有這個在我的XAML:

<AdornerDecorator Visibility="{Binding Path=RootGroup.Loading, Converter={StaticResource VisibilityConverter}}"> 
    <TreeView x:Name="groupTreeView" /> 
</AdornerDecorator> 

,這在我的構造

LoadingAdorner adorner = new LoadingAdorner(groupTreeView); 
AdornerLayer.GetAdornerLayer(groupTreeView).Add(adorner); 

這不是要我想,所以我試圖在代碼綁定它來代替:

LoadingAdorner adorner = new LoadingAdorner(groupTreeView); 
Binding bind = new Binding("RootGroup.Loading"); 
bind.Source = this.DataContext; 
bind.Converter = new VisibilityConverter(); 
adorner.SetBinding(LoadingAdorner.VisibilityProperty, bind); 
AdornerLayer.GetAdornerLayer(groupTreeView).Add(adorner); 

這將工作,如果DataContext不爲空,因爲它實際上可以找到RootGroup.Loading。但是如果它是空的,那麼綁定沒有任何資源可以查看。

所以我想知道XAML數據綁定使用什麼作爲它的.Source?直接在XAML中綁定綁定到正確的屬性,但它不會達到相同的結果。所以我只是想知道我應該設置我的.Source來所以我可以綁定到RootGroup.Loading?

謝謝,勞爾

回答

2

這並不直接回答你的問題,但爲什麼您使用的裝飾器,以獲得加載動畫效果。

爲什麼不使用一個邊界元素是你的TreeView的兄弟,它是Z-Ordered在頂部,然後在那做動畫。

所以,你做這樣的事情

<Grid>  
    <TreeView /> 
    <Border x:Name="myBorder">... </Border>  
</Grid> 

然後,你可以做在XAML所有的約束力不隱藏整個視覺樹。

+0

就像你說的那樣,它不直接回答問題......但是當我在做什麼時,你的方法會更好。 非常感謝! – HaxElit 2009-12-04 19:30:41