我有一个"登录"按钮,我想禁用该按钮,直到同一 WPF 表单上的 3 个文本框填充文本(用户、密码、服务器)。
我有一个支持对象,其中包含一个名为 IsLoginEnabled 的布尔属性,当且仅当所有 3 个控件都有数据时,它才返回 True。 但是,我应该什么时候检查此属性? 它应该在 3 个依赖控件中的每一个的 LostFocus 事件上吗?
谢谢!
VG1890
我会让"支持对象"在更新 3 个字段中的任何字段时引发IsLoginEnabled
更改事件。然后,可以将按钮绑定到 IsLoginEnabled 属性,而不必继续检查它。
伪代码如下所示:
Public Event IsLoginEnabledChanged As EventHandler
Public Property User() As String
Get.. ' snipped for brevity
Set(ByVal value As String)
mUser = value
RaiseEvent IsLoginEnabledChanged(Me, New EventArgs())
End Set
' do the same in the Set for Password() and Server() properties
这样做的诀窍是命名事件[PropertyName]Changed
(即 IsLogonEnabledChanged
) - 因为引发此事件将自动通知任何绑定控件 :o)
是的,我会说最简单的选择是在每个控件的 LostFocus 或 TextChanged 事件上检查它。 但是,如果要执行稍微重的提升,可以将布尔值实现为依赖项属性,该属性可以绑定到按钮的 Enable。http://msdn.microsoft.com/en-us/library/ms750428.aspx
你的IsLoginEnabled权限数据绑定到登录按钮的Enabled属性吗?
我认为您可以使用RoutedCommands这是WPF最有用的功能之一。基本上添加一个 CommandBinding,以使用 OnExecute 和 OnQueryCommandEnabled 来管理按钮的启用状态。
查看有关在 WPF 中使用路由命令的精彩解释