1

現在、WPF UI を使用してプログラムをコーディングしています。ページに変更があったかどうかに応じて、閉じるかキャンセルするボタンがあります。これを実現するには、依存関係プロパティ HasChanges が true のときにボタンが「閉じる」から「キャンセル」に変わるように、ボタンでトリガー (スタイルにラップ) を使用したいと考えています。これまでのところ、私のプログラムはボタンのテキストとして「Close」を表示していますが、依存関係プロパティ HasChanges が true になっても何も起こりません。WPF ページは、XAML ではなく VB.Net で記述されています。

これまでのところ、私は持っています:

Private Sub SetUpMyButton()
    Me.MyButton.Style = Me.GetMyButtonStyle()
End Sub

Private Function GetMyButtonStyle() As Style
    Dim hasChangesTrigger as New Trigger
    hasChangesTrigger.Property = CustomControl.HasChangesProperty
    hasChangesTrigger.Value = True
    hasChangesTrigger.Setters.Add(New Setter(Button.ContentProperty, "Cancel"))

    Dim hasChangesStyle as New Style
    hasChangesStyle.TargetType = GetType(Button)
    hasChangesStyle.Setters.Add(New Setter(Button.ContentProperty, "Close"))
    hasChangesStyle.Triggers.Add(hasChangesTrigger)
    hasChangesStyle.Seal()

    Return hasChangesStyle
End Function

どんな助けでも大歓迎です。

4

1 に答える 1

1

XAMLではなくコードでこれを行う理由については途方に暮れていますが、トリガーがカスタム依存関係プロパティを探す場所を知らないだけだと思います。コードをそのまま使用すると、ボタン自体の HasChanges プロパティが検索されます。それは意図したものですか?TriggerSourceNameプロパティを設定する必要があるかもしれません。または、別のトリガー タイプ (たとえば、 a DataTrigger) を一緒に使用する方が簡単かもしれません。

于 2008-11-25T10:22:07.847 に答える