WPF:向按钮添加触发器

时间:2008-11-24 20:55:51

标签: wpf vb.net triggers styles

我目前正在编写一个带有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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

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