时间:2022年05月14日 | 作者 : aaronyang | 分类 : wpf in net6 | 浏览: 1372次 | 评论 0 人
community-toolkit 8 还有很多功能
除了比7版本的增量式源码生成器,还加了很多
nuget的项目引用,framework版本在packages.config,在NET6在程序集文件里,双击AyWpfNet6
简写ICommand
C#
[ICommand] private void Show2() { //await Task.Delay(2000); Output = $"我是show2,你好,{StuName} 班级 {StuClass}"; }
源码生成器生成如下
xaml
<Button Content="显示2" Command="{Binding Show2Command}"/>
源生成器将负责根据带注释的方法创建正确的Show2Command 属性。
此外,还可以指定 CanExecute 方法,也可以控制异步命令的并发级别。
在属性变化的地方添加canexecute通知,修改diamante如下
[ObservableProperty] [AlsoNotifyCanExecuteFor(nameof(ShowInformation),nameof(Show2Command))] [AlsoNotifyChangeFor(nameof(Info))] private string stuName; private bool CanShow2() { return !string.IsNullOrWhiteSpace(StuName); } [ICommand(CanExecute =nameof(CanShow2))] private void Show2() { //await Task.Delay(2000); Output = $"我是show2,你好,{StuName} 班级 {StuClass}"; }
我们修改ShowInformation名字,改规范,ShowInformationCommand
OK,这两部完成,canexecute的效果也加上了
添加Show3的假的异步方法
[ICommand] private async void Show3() { await Task.Delay(2000); Output = $"我是show3,你好,{StuName} 班级 {StuClass}"; }
这样前台命令绑定 Show3Command3就行了,CanExecute参考上面的写法。
刚发现源码有个init
修改Show3方法
int clickcount = 0; [ICommand] private async void Show3() { //Show3Command clickcount++; await Task.Delay(2000); Output = $"我是show3,你好,{StuName} 班级 {StuClass},被单击了{clickcount}次"; }
连续按钮3次,2秒后,显示如下
此时没有遮罩,这种效果不是想要的
如果对命令使用异步方法,现在可以设置 AllowConcurrentExecutions = false 以使生成的命令不会被允许同时运行多次。
int clickcount = 0; [ICommand(AllowConcurrentExecutions =false)] private async Task Show3() { //Show3Command clickcount++; await Task.Delay(2000); Output = $"我是show3,你好,{StuName} 班级 {StuClass},被单击了{clickcount}次"; }
效果
单击后,按钮自动不可用了
然后执行完成后,按钮可用性恢复
C# 没有多重继承,这有时会成为障碍。 如果有一个必须从特定类型继承的视图模型,但您还想在其中注入 INotifyPropertyChanged 支持,或者让它也从 ObservableRecipient 继承以访问其 API,该怎么办? MVVM 工具包现在包括一种解决此问题的方法,方法是引入代码生成属性,允许将这些类型的逻辑注入任意类。 它们是 [INotifyPropertyChanged]、[ObservableObject] 和 [ObservableRecipient]。
将它们添加到一个类将导致 MVVM Toolkit 源代码生成器将该类型的所有逻辑包含到该类中,就好像该类也继承自该类型一样。 例如:
[INotifyPropertyChanged]
class MyObservableViewModel : DatabaseItem
{
}
注意:MVVM 工具包中的源代码生成器需要 Roslyn 4.x 才能运行。 因此,需要 VS2022 或其他支持 Roslyn 4.x 的 IDE。 仍然支持在 VS2019 或其他旧 IDE 上使用 MVVM 工具包,但源代码生成器将在那里自动禁用,因此不支持依赖它们的功能。
推荐您阅读更多有关于“wpf in net6,”的文章
抖音:wpfui 工作wpf,兴趣学习flutter
目前在合肥市某公司上班,已经厌弃,如果你的公司看的上我,加我QQ私聊
AYUI8全源码 Github地址:前往获取
杨洋(AaronYang简称AY,安徽六安人)和AY交流
高中学历,2010年开始web开发,2015年1月17日开始学习WPF
声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费
不是从我处购买的ayui7源码,我不提供任何技术服务,如果你举报从哪里买的,我可以帮你转正为我的客户,并送demo
查看捐赠AYUI7.X MVC教程 更新如下:
第一课 第二课 程序加密教程
额 本文暂时没人评论 来添加一个吧
发表评论