我有一个“登录”按钮,我希望禁用该按钮,直到同一个 WPF 表单上的 3 个文本框填充了文本(用户、密码、服务器)。
我有一个带有名为 IsLoginEnabled 的布尔属性的支持对象,当且仅当所有 3 个控件都有数据时,它才返回 True。但是,我应该什么时候检查这个属性?它应该在 3 个依赖控件中的每一个的 LostFocus 事件上吗?
谢谢!
vg1890
我有一个“登录”按钮,我希望禁用该按钮,直到同一个 WPF 表单上的 3 个文本框填充了文本(用户、密码、服务器)。
我有一个带有名为 IsLoginEnabled 的布尔属性的支持对象,当且仅当所有 3 个控件都有数据时,它才返回 True。但是,我应该什么时候检查这个属性?它应该在 3 个依赖控件中的每一个的 LostFocus 事件上吗?
谢谢!
vg1890
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 事件。但是,如果您想做一些更重的提升,您可以将布尔值实现为您可以绑定到按钮的启用的依赖属性。 http://msdn.microsoft.com/en-us/library/ms750428.aspx
您可以将您的 IsLoginEnabled 权限数据绑定到登录按钮的 Enabled 属性吗?
我认为您可以使用WPF 最有用的功能之一RoutedCommands 。基本上添加一个CommandBinding,使用OnExecute和OnQueryCommandEnabled来管理按钮的启用状态。