大佬教程收集整理的这篇文章主要介绍了ReactiveUI,可以执行不禁用 WinForm 中的按钮,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的 WinForm
应用程序,其中包含几个文本框和一个确认按钮,我使用的是 ReactiveUI
。@H_618_7@
这是我的视图模型:@H_618_7@
public Currencyviewmodel()
{
editCurrency = new Currency();
this.ValIDationRule(
viewmodel => viewmodel.IsoCode,isoCode => !String.IsNullOrWhiteSpace(isoCodE),"error");
this.ValIDationRule(
viewmodel => viewmodel.name,name => !String.IsNullOrWhiteSpace(Name),"error");
NewCommand = ReactiveCommand.Create(() => NewItem());
SaveCommand = ReactiveCommand.Create(() => Save(),this.IsValID());
}
public String IsoCode
{
get => isoCode;
set
{
editCurrency.IsoCode = value;
this.RaiseAndSetIfChanged(ref isoCode,value);
}
}
public String name
{
get => name;
set
{
editCurrency.name = value;
this.RaiseAndSetIfChanged(ref name,value);
}
}
private voID NewItem()
{
IsoCode = String.Empty;
name = String.Empty;
Symbol = String.Empty;
}
然后我在视图中绑定我的验证和我的保存命令:@H_618_7@
this.bindValIDation(viewmodel,vm => vm.IsoCode,v => v.errorLabelisoCode.Text).disposeWith(disposables);
this.bindValIDation(viewmodel,vm => vm.name,v => v.errorLabelname.Text).disposeWith(disposables);
this.bindCommand(viewmodel,vm => vm.SaveCommand,v => v.sfbuttonOk,nameof(sfbuttonOk.Click)).disposeWith(disposables);
this.bindCommand(viewmodel,vm => vm.NewCommand,v => v.sfbuttonNew,nameof(sfbuttonNew.Click)).disposeWith(disposables);
我的问题是,即使 sfbuttonOk
为 false,当我第一次启动应用程序时,isValID()
仍保持启用状态,该命令不会按预期触发,因此它似乎只是一个图形问题。仅当我写入有效文本然后取消它时,该按钮才会被禁用。@H_618_7@
似乎只有当 isValID
从 true
变为 false
时,按钮才被禁用@H_618_7@
这里的问题可能与视图模型初始化太晚有关,或者由于视图模型属性没有及时在视图端发送更改通知。确保在调用 IViewFor.ViewModel
之前将视图模型分配给 WhenActivated
属性,或者以其他方式在 view side 上实现 INotifyPropertyChanged
(您可能也不需要 { {1}} 因为 WinForms 没有依赖属性 that might introduce a potential for a memory leak)@H_618_7@
另外值得注意的是,我们有针对各种 UI 框架的常青示例应用程序,包括 ReactiveUI.Validation 核心存储库中的 Windows 窗体https://github.com/reactiveui/ReactiveUI.Validation/blob/d5089c933e046c5ee4a13149491593045cda161a/samples/LoginApp/ViewModels/SignUpViewModel.cs#L43 刚刚测试了 Winforms 示例应用程序,按钮可用性似乎与我们一样期待。@H_618_7@
以上是大佬教程为你收集整理的ReactiveUI,可以执行不禁用 WinForm 中的按钮全部内容,希望文章能够帮你解决ReactiveUI,可以执行不禁用 WinForm 中的按钮所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。