2011-02-04 45 views
5

我將一個布爾屬性綁定到視圖的可見性屬性時出現了一個奇怪的問題。調整視圖不可用的可見性屬性

我有一個'主'視圖,其中包含一堆其他視圖以及各種其他UIElements,包括按鈕,文本框,網格,StackPanels和一些telerik控件。一些控件的可見性綁定到我的ViewModel上的布爾屬性,這樣當屬性爲正時,它們將顯示,當爲負時,它們將摺疊。

<Border Visibility="{Binding IsSectionShown, 
       Converter={StaticResource BoolToVisibilityConverter}}" > 

這對我來說是完美的。很明顯,我已經觸發了IsSectionShown設置器中的通知事件,並且控件的可見性也會相應地調整。

現在我有一個視圖需要調整其可見性。明顯的實現是

<vw:ActivityView DataContext="{Binding Activity}" 
       Visibility="{Binding IsPositive, 
         Converter={StaticResource BoolToVisibilityConverter}}" /> 

不行!我的解決辦法是換一個StackPanel內我的觀點和調整StackPanel中的知名度 - 這工作得很好:

<StackPanel Visibility="{Binding IsPositive, 
       Converter={StaticResource BoolToVisibilityConverter}}"> 
    <vw:ActivityView DataContext="{Binding Activity}" /> 
</StackPanel> 

任何想法,爲什麼發生這種情況?解決方法很好,但我想確認我理解的差距。

回答

2

對於這兩個工作,屬性將不得不存在於Activity內和Activity來自的數據上下文中的一個級別。但這可能不是你想要的。相反,你可以使能見度來自不同的數據上下文比適用於視圖本身的一個使用是這樣的:

<vw:ActivityView DataContext="{Binding Activity}" 
       Visibility="{Binding IsPositive, ElementName=ParentElement, 
         Converter={StaticResource BoolToVisibilityConverter}}" /> 

其中ParentElement是包含vw:ActivityView父元素。

+0

當然!謝謝 – 2011-02-04 04:13:30