程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ReactiveUI,可以执行不禁用 WinForm 中的按钮大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决ReactiveUI,可以执行不禁用 WinForm 中的按钮?

开发过程中遇到ReactiveUI,可以执行不禁用 WinForm 中的按钮的问题如何解决?下面主要结合日常开发的经验,给出你关于ReactiveUI,可以执行不禁用 WinForm 中的按钮的解决方法建议,希望对你解决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);

我的问题是,即使 sfbuttonOkfalse,当我第一次启动应用程序时,isValID() 仍保持启用状态,该命令不会按预期触发,因此它似乎只是一个图形问题。仅当我写入有效文本然后取消它时,该按钮才会被禁用。@H_618_7@

似乎只有当 isValIDtrue 变为 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,请注明来意。
标签:中的按钮