1

我有一个“登录”按钮,我希望禁用该按钮,直到同一个 WPF 表单上的 3 个文本框填充了文本(用户、密码、服务器)。

我有一个带有名为 IsLoginEnabled 的布尔属性的支持对象,当且仅当所有 3 个控件都有数据时,它才返回 True。但是,我应该什么时候检查这个属性?它应该在 3 个依赖控件中的每一个的 LostFocus 事件上吗?

谢谢!

vg1890

4

4 回答 4

1

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)

于 2008-10-24T16:02:06.323 回答
0

是的,我想说最简单的选择是检查每个控件的 LostFocus 或 TextChanged 事件。但是,如果您想做一些更重的提升,您可以将布尔值实现为您可以绑定到按钮的启用的依赖属性。 http://msdn.microsoft.com/en-us/library/ms750428.aspx

于 2008-10-24T15:54:10.673 回答
0

您可以将您的 IsLoginEnabled 权限数据绑定到登录按钮的 Enabled 属性吗?

于 2008-10-24T15:58:20.277 回答
0

我认为您可以使用WPF 最有用的功能之一RoutedCommands 。基本上添加一个CommandBinding,使用OnExecuteOnQueryCommandEnabled来管理按钮的启用状态。

查看有关在 WPF 中使用 RoutedCommands 的精彩说明

于 2008-10-24T19:46:20.067 回答