我有一个问题,如何正确地绑定在双向密码在PasswordBox
。我目前的解决方案几乎奏效。问题是,在打字时光标停留在开始,不去与文本在结束。输入12345
,我的View Model会收到值54321
。
我使用WFP和XAML。视图后面的代码看起来像这样:
Observable.FromEventPattern(SecretKey, nameof(SecretKey.PasswordChanged))
.Subscribe(evt => ViewModel.SecretKey = SecretKey.Password)
.DisposeWith(disposableRegistration);
this.OneWayBind(ViewModel, viewModel => viewModel.SecretKey, view => view.SecretKey.Password)
.DisposeWith(disposableRegistration);
光标的行为是正确的,当其中一个结构被注解,所以问题是与绑定在两种方式,我不知道如何解决它。正如你现在PasswordBox.Password
不能从视图绑定到视图模型,我需要使用事件。
3条答案
按热度按时间bjp0bcyl1#
我不认为有一个'官方'的方式来做到这一点,我不知道如果你应该。
但您可以在设置值后手动设置光标位置来解决此问题(source)。
“hack”绑定:
yfwxisqw2#
我最近遇到了类似的问题,下一个解决方案对我来说效果很好。也许能帮到别人。
dba5bblo3#
PasswordBox
通常由附加属性处理。我做了研究,ReactiveUi
绑定不能处理带有附加属性的双向绑定。另一方面,当您使用ReactiveUi
时,在XAML中没有绑定的危险信号-不鼓励,但不禁止。考虑到纯ReactiveUi
无法实现附加属性,我决定在绑定PasswordBox
时例外,我认为这是合理和正确的。我使用了
PasswordHelper
,它实现了wpftutorial.net教程中的附加属性在XAML中,我对
PasswordBox
使用标准绑定,并附带属性:在后面的代码中,我将
ViewModel
绑定到DataContext
。您可以在GitHub repository中找到示例应用程序。