wpf
文章平均质量分 89
茗杨AaronYang
胖乎乎的,但技术还好
展开
-
ay uno in net6 第8天
自己折腾下环境,翻墙到外网,大约半个小时后,编译安装东西,程序跑起来了。在window上用vs不能开发macos(xamarin)vs2022 preview3 扩展和更新搜索uno。你的C盘至少256G,不然估计很难受,建议512G。经过测试,就是个类似群聊,直播讨论的社区软件。群主定义标签,成员领用标签,群内分组跟清晰。一个xaml语法的page,做各种页面。可能需要安装东西,我的提示如下。原创 2023-11-20 10:54:24 · 22 阅读 · 0 评论 -
ay wpf avalonedit记录
官方示例<RuleSet><RuleSet></RuleSet></Span>-- ... -->| \b([eE][+-]?[0-9]+)?</Rule></RuleSet>给颜色取名字,下方定义规则下面定义个lua的高亮规则新建个txt,改名字lua.xshd 文件类型改为 嵌入的资源,你也可以是资源,主要嵌入到程序还能读取xml内容</RuleSet><RuleSet><RuleSet></RuleSet></Span>原创 2023-11-24 23:52:10 · 129 阅读 · 0 评论 -
Ay写给2022的纯xaml [wpf4net5] - Caliburn Micro-导航服务传参[9/16]
下面的例子:从一个页面打开另一个页面, 并给第二个页面传递参数值。原创 2023-11-22 09:09:59 · 90 阅读 · 0 评论 -
Ay写给2022的纯xaml [wpf4net5] - Caliburn Micro-Bubbling[8/16]
在一个列表控件中,每个数据模板中 比如有按钮,单击事件绑定vm的命令,一般都是找到最根部的datacontext,那么在cm中有更简单的方式如何将动作从子视图模型冒泡到父视图。原创 2023-11-22 09:09:45 · 30 阅读 · 0 评论 -
Ay写给2022的纯xaml [wpf4net5] - Caliburn Micro-Conductor[7/16]
通过发布订阅的方式 在VM之间 传递界面与界面的操作在多个需要传递操作的vm中也需要加。原创 2023-11-21 09:07:14 · 69 阅读 · 0 评论 -
Ay写给2022的纯xaml [wpf4net5] - Caliburn Micro-EventAggregation[6/16]
通过发布订阅的方式 在VM之间 传递界面与界面的操作在多个需要传递操作的vm中也需要加。原创 2023-11-21 09:06:39 · 37 阅读 · 0 评论 -
Ay写给2022的纯xaml [wpf4net5] - Caliburn Micro-Execute 异步里面更新界面UI[5/16]
新建 ExecuteViewModel添加ExecuteView.xaml和ExecuteView.xaml.cs添加2个按钮<Grid><Button x:Name="StartUnSafeBackgroundWork" Content="非安全更新"/><Button x:Name="StartSafeBackgroundWork" Content="使用CM的Execute.OnUIThread"/></Grid></Page>原创 2023-11-21 09:06:24 · 56 阅读 · 0 评论 -
Ay写给2022的纯xaml [wpf4net5] - Caliburn Micro-Coroutine协程[4/16]
这里我们会用CM的 IResult接口我们先定义个ResultBase,后面每个任务都继承ResultBase新建一个Results文件夹});});这里有个很常用的类Execute,用于在非UI线程 处理业务时候,然后切换到界面线程去执行指定Action的,还有判断是不是在开发模式还是运行模式InDesignModeCM中提供了一个实现了IResult的TaskResult方便您使用,顺便提供了TaskExtensions可以把Task转为IResult。原创 2023-11-21 09:05:53 · 40 阅读 · 0 评论 -
Ay写给2022的纯xaml [wpf4net5] - Caliburn Micro-调用vm的方法[3/16]
增加个TaskHelper,后面用的到#else#endif新建 ActionsViewModel.csprivate string output="输出";新建ActionsView.xaml非常重要的2个引入xmlns:i="非常重要的待通知的属性写法,继承了Screen类后</Style><Grid></Grid></Page>在Bootstrapper.cs修改Configure()container。原创 2023-11-21 09:05:40 · 77 阅读 · 0 评论 -
Ay写给2022的纯xaml [wpf4net5] - Caliburn Micro-绑定[2/16]
修改BindingsView<Grid></Style></ListBox></Grid></Grid></Page>在ViewModels和Views 都新建 Activity文件夹,以后默认都同步新建文件夹,这也是CM命名规则,只认namespace,这也是为了防止出错。ListBox使用Activities名称,所以后台有个Activities的集合,集合的Item只能是一个类型,所以我们放父类,拓展两个子类类型对应的<Grid>原创 2023-11-21 09:04:42 · 60 阅读 · 0 评论 -
Ay写给2022的纯xaml [wpf4net5] - Caliburn Micro[1/16],MyGet
终于有点可以学习的时间了,决定系统化折腾下net5版本的wpf的相关技术栈的程序集第一站就是看下最新版本的CM的变化。我的以前相关的文章同类MVVM通过git方式:git initgit clone相关文章在 Visual Studio 中打开 工具 -> 选项 -> NuGet 包管理器 -> 包源:其他nuget源如果打不开。原创 2023-11-21 09:03:36 · 45 阅读 · 0 评论 -
ay maui in net6 第12天 基本xaml
..这样使用时候,可以省去 <ContentPage.Content>...平台MAUIWPF字体颜色TextColorForeground垂直对齐字体加粗/斜体等FontWeight和FontStyle水平对齐背景色BackgroundLabel的TextAlignmentButton按钮边框厚度旋转自带Rotation配合Transform依赖属性边框颜色。原创 2023-11-22 09:10:23 · 42 阅读 · 0 评论 -
ay wpf in net6 第10天 - 练手项目UI案例1 第11-20步
全当练手 布局和一些基本思路,实际使用需要配合 数据绑定,动态生成的数据11 信息卡片<!--信息卡片--><GridGrid.Row="1"Margin="50201540"><Grid.ColumnDefinitions><ColumnDefinitionWidth="*"/>原创 2023-11-21 09:05:12 · 54 阅读 · 0 评论 -
ay wpf in net6 第9天 - 练手项目UI案例1 第1-10步
TextBlock Text="下午好, AaronYang" FontSize="26" Foreground="#ccd7ff" HorizontalAlignment="Left" Margin="50 35 0 20"/><Button Style="{StaticResource topMenuButton}" Content="本周" Background="#5b60c4" Foreground="#FFFFFF"/><TextBlock Text="主页"/>原创 2023-11-20 10:55:23 · 63 阅读 · 0 评论 -
ay wpf in net6 第6天 - 引入CommunityToolkitMvvm 8.0 ObservableValidator
比如输入的内容,必须含有AY[Required]return new("输入的内容必须包含AY");输入AY后进行自定义验证的另一种方法是实现自定义 [ValidationAttribute]。然后将验证逻辑插入到重写的 IsValid 方法中。与上述方法相比,这提供了额外的灵活性,因为它可以很容易地在多个地方重用相同的属性。return new("输入的内容必须包含AY");然后在属性加上下面还有个参考的验证,比如获得当前类,某个属性的值,然后比较的。原创 2023-11-20 10:52:37 · 114 阅读 · 0 评论 -
ay wpf in net6 第5天 - 引入CommunityToolkitMvvm 8.0 RequestMessage和CollectionRequestMessage
m.Reply(new ModuleMenu { MenuCommand = () => { }, MenuName = "关闭" });m.Reply(new Teacher { TeacherName = "十年老师带token的" + "id=任意" });m.Reply(new Teacher { TeacherName = "杨老师带token的" + "id=1" });m.Reply(new Teacher { TeacherName = "杨老师带token的" });原创 2023-11-20 10:52:51 · 120 阅读 · 0 评论 -
ay wpf in net6 第4天 - 引入CommunityToolkitMvvm 8.0 消息接收
属性通知约定增加了OnXXXChanging方法和OnXXXChanged修改代码如下public string Info => $"你输入的姓名:{StuName}";set;Info2 += "姓名将要变为" + value+"\r\n";Info2 += "姓名已经变为" + value + "\r\n";输入partial就已经开始提示了xaml<TextBlock Text="姓名"/><TextBlock Text="班级"/>原创 2023-11-20 10:52:04 · 174 阅读 · 0 评论 -
ay wpf in net6 第3天 - 引入CommunityToolkitMvvm 8.0 - ICommand升级
如果有一个必须从特定类型继承的视图模型,但您还想在其中注入 INotifyPropertyChanged 支持,或者让它也从 ObservableRecipient 继承以访问其 API,该怎么办?MVVM 工具包现在包括一种解决此问题的方法,方法是引入代码生成属性,允许将这些类型的逻辑注入任意类。仍然支持在 VS2019 或其他旧 IDE 上使用 MVVM 工具包,但源代码生成器将在那里自动禁用,因此不支持依赖它们的功能。此外,还可以指定 CanExecute 方法,也可以控制异步命令的并发级别。原创 2023-11-20 10:51:51 · 123 阅读 · 0 评论 -
ay wpf in net6 第2天 - 引入CommunityToolkitMvvm 搭建项目和ViewModel升级
我们引入Mvvm的NET6版本学习示例按照规矩,先建立个ViewModels文件夹,添加MainWindowViewModel.cs由于MvvmLight弃用,我们就是用CommunityToolkitMvvm,现在时间2022-5-13我们改用下面任意一个,他们2个是一模一样的,我使用Community.Toolkit.Mvvm点击安装,直接最新版、这个的学习文档为什么选择他,AY认为很多技术都用到了这个Mvvm,比如Uno开发父类 ObservableObject 自带通知。原创 2023-11-20 10:51:37 · 777 阅读 · 0 评论 -
ay wpf in net6 第1天 - 引入依赖注入
Button Content="单击" Padding="16,10" Click="Button_Click" HorizontalAlignment="Center" VerticalAlignment="Center">这里MainWindow我们配置了单例,所以在App.xaml设置起始窗口就要注意了,我们修改App.xaml顶部的代码,移除StartupUri="MainWindow.xaml"回到App.xaml.cs,我们需要写个静态的serviceprovider。原创 2023-11-20 10:51:23 · 110 阅读 · 0 评论 -
[Aaronyang] 写给自己的WPF4.5 笔记8[复杂数据处理三步曲,数据视图精讲]
接下来,我们需要在xaml中定义个视图,关于 CollectionViewSource有2个属性:View封装了视图对象,Source封装了数据源,还有其他的属性,例如排序,分组,过滤事件。在上篇博客中,我们说到了 binding的二次处理,其中有个思路就是 值转换器,WPF的分组中提供了Converter参数,所以我们可以试着新建一个实现IValueConverter类,以达到产生很多组名,就好比每个视图中的每个对象有了新属性组名字,这样listbox指定了分组样式后就知道了如何进行分组,从而显示了。原创 2023-11-24 23:54:14 · 162 阅读 · 0 评论 -
[Aaronyang] 写给自己的WPF4.5 笔记7[ItemsControl数据绑定详解与binding二次处理 3/3]
TextBox Height="23" Canvas.Left="137" TextWrapping="Wrap" Text="{Binding Source={StaticResource nowTime},Path=MyMoney,StringFormat=我的Money:{0:C}}" Canvas.Top="24" Width="163"/>由于模板中,Border的背景绑定了父节点的背景,我们只需要将Border最大化占满Item,就可以完全替代Item了。原创 2023-11-21 09:01:41 · 480 阅读 · 1 评论 -
[Aaronyang] 写给自己的WPF4.5 笔记6[大数据加载与WPF4.5 验证体系详解 2/3]
普通的加载真正创建了1万个ComboBoxItem对象,所以很占内存,而虚拟化,就是他对数据进行了分页,每次只创建那么多你可见的数据给你,所以内存占用的少,而有的人自己实现个虚拟面板,就是滚动时候,删除上面的元素,增加新元素。像实时监控曲线就是这个思路,它不停地在图标控件画线移动,就是就是固定长度的线条数,超过长度,就会删掉前面的点,从而减少内存占用。这个说法也是应该的,因为绑定的属性的Age,界面的Age变了,才能作用到源,也就是对象的Age,这样才能触发验证的代码,所以Mode的前提是必须的。原创 2023-11-24 23:54:04 · 180 阅读 · 0 评论 -
[Aaronyang]写给自己的WPF4.5 笔记5[数据绑定1/3]
下载教你如何在vs2013中不安装Mssql数据库,使用了Sqlserver Compact,以及全部ef操作这个数据库。教你从后台取数据,怎么绑定前台数据,并通过wpf的方式更新界面数据,ObservableCollection和属性通知教你如何绑定集合的数据,教你如何关联的前台绑定集合数据教你使用前台绑定radiobutton和简单的值转换器,字符格式化器教你使用了AY自己亲自制作的AyRadiobuttonList,此控件还在拓展,性能已经最大化的优化了,暂不支持虚拟化加载大数据。原创 2023-11-21 09:06:09 · 91 阅读 · 0 评论 -
[Aaronyang]写给自己的WPF4.5 [wpf使用FontAwesome]
总有一个人他教会你成长,然后又独自离开。原创 2023-11-24 23:53:53 · 129 阅读 · 0 评论 -
[Aaronyang]写给自己的WPF4.5 笔记3 [MenuItem中的icon]
敢于尝试,就等于你已经向成功迈出了第一步=============时隔两年后再看WPF==========因为以前的经验,所以继承FrameworkElement,我就简写继承FWE ,继承UIElement就写继承UIE后面重头戏就是blend中的开发,不想写的千篇一律。如果期待,左侧有关注按钮。原创 2023-11-24 23:53:19 · 421 阅读 · 0 评论 -
[Aaronyang] 写给自己的WPF4.5 失传的秘籍[多扩展显示器编程]
核心代码在DEMO里面,自己看吧(发布时间:2015年1月5日,资源删除时间2015年1月10日,需要下载的赶快下吧)需求:比如A主机,打开4个窗体,外面接了3个显示器,点击程序的按钮,直接其他3个窗体,分别最大化显示在其他的显示器上。1. 你只要理解 所有的屏幕拓展后,会是一个大屏幕,每个屏幕都是一个对象,根据这个对象就可以拿到 每个显示器的信息。获得显示器对象,然后在这个显示器里面show,哎~AaronYang告诉你,这可是一个不归路!餐饮收费系统,网吧系统等。3个窗体,一个主屏幕的窗体,用于操作。原创 2023-11-22 09:07:45 · 50 阅读 · 0 评论 -
[Aaronyang] 写给自己的WPF4.5 笔记2[依赖属性]
人生的意义不在于拿一手好牌,而在于打好一手坏牌 因为以前的经验,所以继承FrameworkElement,我就简写继承FWE ,继承UIElement就写继承UIE 后面重头戏就是blend中的开发,不想写的千篇一律。个人感觉,下面的这张图标比较重要,它或许有些帮助。我看东西只看分析出原理,你就可以拓三返一。Tip: 只能为依赖对象(继承自DependencyObject的类)添加依赖属性。放心的事,wpf大部分都间接继承了。依赖属性提高的不仅仅是性能。插曲:如果想更进一步了解.net framework,原创 2023-11-24 23:53:44 · 71 阅读 · 0 评论 -
[Aaronyang] 写给自己的WPF4.5 笔记1[布局]
TextBlock Margin="3" Text="测试一段文字哈哈哈哈哈哈哈哈哈啊哈哈哈哈测试一段文字哈哈哈哈哈哈哈哈哈啊哈哈哈哈测试一段文字哈哈哈哈哈哈哈哈哈啊哈哈哈哈测试一段文字哈哈哈哈哈哈哈哈哈啊哈哈哈哈测试一段文字哈哈哈哈哈哈哈哈哈啊哈哈哈哈测试一段文字哈哈哈哈哈哈哈哈哈啊哈哈哈哈测试一段文字哈哈哈哈哈哈哈哈哈啊哈哈哈哈测试一段文字哈哈哈哈哈哈哈哈哈啊哈哈哈哈" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="3"></TextBlock>原创 2023-11-24 23:53:30 · 33 阅读 · 0 评论