0

私はvisioに似たWPFアプリケーションに取り組んでいます。ダイアグラム内のいくつかの項目 (それぞれが UIElement) を論理的にグループ化し、グループ レベルで特定の動作 (可視性など) を制御できるようにしたいと考えています。

これに対する私の最初の試みは、幅と高さ = 0 のグループと呼ばれるコントロールを作成することでした。グループ プロパティを通じて特定の「グループ」をダイアグラム要素に割り当て、特定の UIElement プロパティをグループにバインドしたいと考えました。値、以下のように:

<DiagramNode  
         Width="300" Height="300" 
         Visibility="{Binding RelativeSource={RelativeSource Self},Path=Group.Visibility}"
         > ... </DiagramNode >

これはバインド エラーをスローしませんが、機能しません。グループの可視性を変更しても、そのグループに割り当てられたノードの可視性には影響しません。私が知る限り、いつでもエラーは表示されませんが、機能しません。

何か案は?私のアプローチは可能ですか?いいえの場合は、提案したい代替案があります:)。私は巨大な UI の専門家ではありません。サービス レイヤーの方がはるかに快適だと感じているので、他の提案も受け付けています。

4

2 に答える 2

0

デバッガーで実行したときにアプリケーションのトレースにバインド エラーが実際にない場合、問題はおそらく変更通知にあります。VisibilityオブジェクトのプロパティがGroup変更されたときに変更通知を提供することを確認する必要があります。

これは通常INotifyPropertyChanged、クラスに実装することによって行われ、set アクセサーでPropertyChangedイベントを発生させます (値が実際に変更された場合)。

于 2010-01-18T19:33:09.073 に答える
0

問題は、DiagramNode クラスの Group オブジェクトのプロパティ宣言にあるのでしょうか?

Public Class DiagramNode
...
Private _group As Group
Public Property Group() As Group
    Get
        Return Me._group 
    End Get
    Set(ByVal value As Group)
        Me._group = value
    End Set
End Property
...
End Class
于 2010-01-18T21:52:50.793 に答える