我目前正在编写一个带有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
非常感谢任何帮助。
答案 0 :(得分:1)
我不知道你为什么要在代码而不是XAML中执行此操作,但我认为只是你的触发器不知道在哪里查找自定义依赖项属性。使用您的代码,它将在按钮本身上查找HasChanges属性。这是有意的吗?也许您需要设置Trigger
的{{1}}属性。或者也许完全使用不同的触发类型(例如,SourceName
)会更容易。