2011-02-04 2 views
5

ブール値プロパティをViewのVisibilityプロパティにバインドする際に奇妙な問題が発生しました。ビューのVisibilityプロパティを調整しない

ボタン、テキストボックス、グリッド、スタックパネル、およびいくつかのコントロールを含む他のさまざまなUIElementsと同様に、他のビューの束を含む「メイン」ビューがあります。いくつかのコントロールは、プロパティが正の場合は表示され、負の場合は表示されないように、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の内部と1つ上のレベルの両方のプロパティが存在する必要があります。しかし、それはおそらくあなたが意図したものではありません。

ParentElementvw:ActivityViewを含む親要素である
<vw:ActivityView DataContext="{Binding Activity}" 
       Visibility="{Binding IsPositive, ElementName=ParentElement, 
         Converter={StaticResource BoolToVisibilityConverter}}" /> 

:視認性がビュー自体に適用されるものとは異なるデータコンテキストから来るようにする代わりに、あなたはこのようなものを使用することができます。

+0

もちろん!ありがとう –

関連する問題