WPF: добавление триггера к кнопке - PullRequest
1 голос
/ 24 ноября 2008

В настоящее время я пишу программу с интерфейсом WPF, и у меня есть кнопка, которая может быть закрыта или отменена, в зависимости от того, были ли внесены какие-либо изменения на странице. Чтобы достичь этого, я хочу использовать триггер (обернутый в стиле) на кнопке, чтобы при значении свойства зависимости HasChanges значение true изменялось с «Закрыть» на «Отмена». Пока что моя программа отображает «Закрыть» как текст кнопки, но ничего не происходит, когда мое свойство зависимости HasChanges становится истинным. Страница WPF пишется на VB.Net, а не на XAML.

Пока у меня есть:

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

Любая помощь очень ценится.

1 Ответ

1 голос
/ 25 ноября 2008

Я в недоумении, почему вы делаете это в коде, а не в XAML, но я думаю, что просто ваш триггер не знает, где искать пользовательское свойство зависимости. С вашим кодом, как есть, он будет искать свойство HasChanges на самой кнопке. Это предназначено? Возможно, вам нужно установить свойство Trigger s SourceName. Или, возможно, было бы проще использовать другой тип триггера (например, DataTrigger).

...