1

我目前正在编写一个带有 WPF UI 的程序,并且我有一个关闭或取消的按钮,具体取决于页面上是否有任何更改。为了实现这一点,我想在按钮上使用触发器(以样式包装),以便当依赖属性 HasChanges 为 true 时,按钮将从“关闭”变为“取消”。到目前为止,我的程序将“关闭”显示为按钮的文本,但是当我的依赖属性 HasChanges 变为 true 时没有任何反应。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

任何帮助是极大的赞赏。

4

1 回答 1

1

我不知道为什么要在代码中而不是 XAML 中执行此操作,但我认为只是您的触发器不知道在哪里查找自定义依赖项属性。使用您的代码,它将在按钮本身上查找 HasChanges 属性。这是故意的吗?也许您需要设置Trigger'SourceName属性。或者可能完全使用不同的触发器类型(例如 a DataTrigger)会更容易。

于 2008-11-25T10:22:07.847 回答