WPF实战项目二十二(客户端):首页添加备忘录与待办事项

1、在View文件夹下新建文件夹Dialog,新建View:AddMemoView、AddToDoView

<UserControlx:Class="WPFProject.Views.Dialogs.AddToDoView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:local="clr-namespace:WPFProject.Views.Dialogs"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes"Width="450"Height="280"mc:Ignorable="d"><Grid><Grid.RowDefinitions><RowDefinition Height="auto" /><RowDefinition /><RowDefinition Height="auto" /></Grid.RowDefinitions><TextBlockPadding="20,10"FontSize="20"FontWeight="Bold"Text="添加待办" /><DockPanel Grid.Row="1" LastChildFill="False"><StackPanel DockPanel.Dock="Top" Orientation="Horizontal"><TextBlock Text="状态:" /><ComboBox><ComboBoxItem>待办</ComboBoxItem><ComboBoxItem>已完成</ComboBoxItem></ComboBox></StackPanel><TextBoxMargin="20,0"md:HintAssist.Hint="请输入待办概要"DockPanel.Dock="Top" /><TextBoxMinHeight="100"Margin="20,10"md:HintAssist.Hint="请输入待办内容"AcceptsReturn="True"DockPanel.Dock="Top"TextWrapping="Wrap" /><!--  Wrap是按字符换行,WrapWithOverflow是按空格换行。  --><!--  当TextWrapping设置为"Wrap"时,输入字符串超出指定宽度后就会自动发生换行  --><!--  AcceptsReturn如果文本框允许换行符,则为 true;否则为 false。 默认值为 false。  --></DockPanel><StackPanelGrid.Row="2"Margin="10"HorizontalAlignment="Right"Orientation="Horizontal"><ButtonMargin="0,0,10,0"Content="取消"Style="{StaticResource MaterialDesignOutlinedButton}" /><Button Content="确定" /></StackPanel></Grid>
</UserControl>
<UserControlx:Class="WPFProject.Views.Dialogs.AddMemoView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:local="clr-namespace:WPFProject.Views.Dialogs"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes"Width="450"Height="280"mc:Ignorable="d"><Grid><Grid.RowDefinitions><RowDefinition Height="auto" /><RowDefinition /><RowDefinition Height="auto" /></Grid.RowDefinitions><TextBlockPadding="20,10"FontSize="20"FontWeight="Bold"Text="添加备忘录" /><DockPanel Grid.Row="1" LastChildFill="False"><TextBoxMargin="20,0"md:HintAssist.Hint="请输入备忘录概要"DockPanel.Dock="Top" /><TextBoxMinHeight="100"Margin="20,10"md:HintAssist.Hint="请输入备忘录内容"AcceptsReturn="True"DockPanel.Dock="Top"TextWrapping="Wrap" /></DockPanel><StackPanelGrid.Row="2"Margin="10"HorizontalAlignment="Right"Orientation="Horizontal"><ButtonMargin="0,0,10,0"Content="取消"Style="{StaticResource MaterialDesignOutlinedButton}" /><Button Content="确定" /></StackPanel></Grid>
</UserControl>

 2、IndexView中修改按钮,绑定方法:ExecuteCommand

<ButtonWidth="30"Height="30"VerticalAlignment="Top"Command="{Binding ExecuteCommand}"CommandParameter="新增待办事项"DockPanel.Dock="Right"Style="{StaticResource MaterialDesignFloatingActionMiniAccentButton}"><md:PackIcon Kind="Add" /></Button>
<ButtonWidth="30"Height="30"VerticalAlignment="Top"Command="{Binding ExecuteCommand}"CommandParameter="新增备忘录"DockPanel.Dock="Right"Style="{StaticResource MaterialDesignFloatingActionMiniAccentButton}"><md:PackIcon Kind="Add" /></Button>

 3、ViewModels新建Dialogs文件夹,新建AddMemoViewModel、AddToDoViewModel

public class AddMemoViewModel : IDialogAware{public string Title {get;set;}public event Action<IDialogResult> RequestClose;public bool CanCloseDialog(){return true;}public void OnDialogClosed(){}public void OnDialogOpened(IDialogParameters parameters){}}
public class AddToDoViewModel : IDialogAware{public string Title {get; set;}public event Action<IDialogResult> RequestClose;public bool CanCloseDialog(){return true;}public void OnDialogClosed(){}public void OnDialogOpened(IDialogParameters parameters){}}

4、修改IndexViewModel

using Prism.Commands;
using Prism.Mvvm;
using Prism.Services.Dialogs;
using System.Collections.ObjectModel;
using WPFProject.Common.Models;
using WPFProjectShared.Dtos;namespace WPFProject.ViewModels
{public class IndexViewModel : BindableBase{public IndexViewModel(IDialogService dialog){TaskBars = new ObservableCollection<TaskBar>();CreateTaskBars();ToDoDtos = new ObservableCollection<TodoDto>();MemoDtos = new ObservableCollection<MemoDto>();ExecuteCommand = new DelegateCommand<string>(Execute);this.dialog = dialog;}private void Execute(string obj){switch (obj){case "新增待办事项":AddToDo();break;case "新增备忘录":AddMemo();break;}}private void AddMemo(){dialog.ShowDialog("AddToDoView");}private void AddToDo(){dialog.ShowDialog("AddMemoView");}public DelegateCommand<string> ExecuteCommand { get; private set; }#region 属性/// <summary>/// 列表/// </summary>private ObservableCollection<TaskBar> taskBars;public ObservableCollection<TaskBar> TaskBars{get { return taskBars; }set { taskBars = value; RaisePropertyChanged(); }}/// <summary>/// 代办事项/// </summary>private ObservableCollection<TodoDto> toDoDtos;public ObservableCollection<TodoDto> ToDoDtos{get { return toDoDtos; }set { toDoDtos = value; RaisePropertyChanged(); }}/// <summary>/// 备忘录/// </summary>private ObservableCollection<MemoDto> memoDtos;private readonly IDialogService dialog;public ObservableCollection<MemoDto> MemoDtos{get { return memoDtos; }set { memoDtos = value; RaisePropertyChanged(); }}#endregionprivate void CreateTaskBars(){TaskBars.Add(new TaskBar() { Icon = "ClockFast", Title = "汇总", Content = "27", Color = "#0CA0FF", Target = "" });TaskBars.Add(new TaskBar() { Icon = "ClockCheckOutLine", Title = "已完成", Content = "24", Color = "#1ECA3A", Target = "" });TaskBars.Add(new TaskBar() { Icon = "ChartLineVariant", Title = "完成比例", Content = "89%", Color = "#02C6DC", Target = "" });TaskBars.Add(new TaskBar() { Icon = "PlaylistStar", Title = "备忘录", Content = "13", Color = "#FFA000", Target = "" });}}
}

 5、在App.xmal.cs中注册弹窗

//注册弹窗containerRegistry.RegisterDialog<AddToDoView, AddToDoViewModel>();containerRegistry.RegisterDialog<AddMemoView, AddMemoViewModel>();

6、F5运行项目 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/581878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

推荐五款简洁而实用的工具,值得你尝试

​ 分享快乐是生活中美好的瞬间&#xff0c;而分享简单巧妙的工具也能令我愉悦。这五款工具简洁而实用&#xff0c;值得你尝试。 1.视频播放器——Potplayer Potplayer是一款视频播放器&#xff0c;支持DXVA、CUDA和QuickSync等硬件加速技术&#xff0c;提供高效的视频播放性…

Linux(openssl):用CA证书签名具有SAN的CSR

Linux(openssl):创建CA证书,并用其对CSR进行签名_生成ca证书签名请求文件csr-CSDN博客 提供了方法为CSR进行签名。 对于有SAN的CSR如何签名呢? 1.创建CA证书,与下面的帖子一样

关于Java并发、JVM面试题

前言 之前为了准备面试&#xff0c;收集整理了一些面试题。 本篇文章更新时间2023年12月27日。 最新的内容可以看我的原文&#xff1a;https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv 并发 进程与线程的区别 线程属于进程&#xff0c;进程可以拥有多个线程。进程独享…

【论文阅读】Resource Allocation for Text Semantic Communications

这是一篇关于语义通信中资源分配的论文。全文共5页&#xff0c;篇幅较短。 目录在这里 摘要关键字引言语义通信资源分配贡献公式符号 系统模型DeepSC TransmitterTransmission ModelDeepSC Receiver 语义感知资源分配策略Semantic Spectral Efficiency &#xff08;S-SE&#…

C++初阶(十七)模板进阶

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、非类型模板参数二、模板的特化1、概念2、函数模板特化3、类模板特化1、全特化2、偏特化 三…

Python爬虫篇(四):京东数据批量采集

京东数据批量采集 ●前言 一年一度的端午节又到了&#xff0c;甜咸粽子之争也拉开了帷幕&#xff0c;它价格高昂&#xff0c;它味道鲜美&#xff0c;然而&#xff0c;默默无名的它却备受广大民众喜爱&#xff01;好家伙&#xff0c;一看就是老qq看点了 &#xff0c;那咱们能做…

07.kubernetes客户端部署

kubernetes 客户端部署 主要是配置 kubectl 完成以下两个操作: 首先是要实现通过命令行连接到Kubernetes的apiserver然后就是创建必要的 ClusterRoleBinding 实现 kubelet bootstrapping CSR 的自动验签kubelet bootstrapping主要涉及以下两个问题,官方文档已经给出详细的介…

Flink1.17实战教程(第七篇:Flink SQL)

系列文章目录 Flink1.17实战教程&#xff08;第一篇&#xff1a;概念、部署、架构&#xff09; Flink1.17实战教程&#xff08;第二篇&#xff1a;DataStream API&#xff09; Flink1.17实战教程&#xff08;第三篇&#xff1a;时间和窗口&#xff09; Flink1.17实战教程&…

BOM是什么? BOM核心有哪些?可以实现哪些功能?

文章目录 ❄️一、BOM是什么❄️二、BOM的核心有哪些&#x1f9ff;window 对象——BOM核心&#x1f365;Document对象&#x1f3af;Frames 对象&#x1f95d;Navigator 对象&#x1f9eb;History对象&#x1f4c0;Location对象&#x1f36a;Screen对象 ❄️三、BOM可以实现的功…

从零学算法103

103.给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff0c;层与层之间交替进行&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,…

聚焦亚马逊云科技 re:Invent re:Cap专场,重构生成式AI的无限可能!

摘要&#xff1a;12月14日至17日&#xff0c;第十二届全球软件案例研究峰会(简称TOP100summit)在北京国际会议中心成功举办&#xff0c;亚马逊云科技资深开发者布道师郑予彬、亚马逊云科技解决方案研发中心应用科学家肖宇、可以科技产品负责人曹临杰、亚马逊云科技解决方案架构…

Hive实战:统计总分与平均分

文章目录 一、实战概述二、提出任务三、完成任务&#xff08;一&#xff09;准备数据文件1、在虚拟机上创建文本文件2、将文本文件上传到HDFS指定目录 &#xff08;二&#xff09;实现步骤1、启动Hive Metastore服务2、启动Hive客户端3、创建Hive表&#xff0c;加载HDFS数据文件…

PO 发布SAP SProxy->外围系统 WebService

通信概览图 外围系统与PO、SAP的请求响应通信过程大致可以用下图描述 &#xff08;个人整理所得&#xff0c;可能有误&#xff0c;欢迎指正&#xff09; 1. 前期准备 1.1 外围系统提供WebService接口 以A系统的RFC发布WebService接口 RFC发布WebService接口 获取到WSDL地…

CSS样式详解之伪类元素及CSS3选择器

目录 一、伪类元素二、CSS3选择器1. 相邻选择器&#xff08;&#xff09;2. 兄弟选择器&#xff08;~&#xff09;3. 指定选择器&#xff08;nth-of-type(n)&#xff09;4. 子元素指定选择器&#xff08;子元素匹配选择器&#xff09;5. 属性选择器① [ 属性名 ]② [ 属性名属性…

什么是MLOps?

人工智能&#xff08;AI&#xff09;和机器学习&#xff08;ML&#xff09;应用激动人心的发展浪潮也许会让人相信&#xff0c;企业交付ML产品的能力也在迅速提高。但现实情况是&#xff0c;ML内部流程很难跟上行业的整体发展……但若以MLOps的形式则有希望解决此问题&#xff…

面试复盘5——后端开发——一面

前言 本文主要用于个人复盘学习&#xff0c;因此为保障公平&#xff0c;所以本文不指出公司名&#xff0c;题目编号只是为了自己区别而已。对待面经&#xff0c;望读者还是更多从其中学习总结&#xff0c;而不是去碰原题。 面试岗位信息 后端开发秋招&#xff0c;上海某大中…

08.Kubernetes node 节点部署

Kubernetes node节点部署比较繁琐,需要配置一堆的配置文件和证书,手动配置特别容易出错。 这就体现出用脚本部署的优势,将繁琐的操作批量自动化 一是极大的提升效率(尤其是节点比较多的时候)二是确保所有节点配置的统一性(配置统一很重要,因为正常情况下,如果某个节点出…

一文让你读懂Python中的Response对象

目录 引言 一、Response对象简介 二、Response对象的组成 三、Response对象的创建 1、使用内置的http.client模块&#xff1a; 2、使用requests库&#xff1a; 3、使用Django框架&#xff1a; 四、Response对象的处理 1、发送给客户端&#xff1a; 2、设置响应头&…

centos 编译安装 libxml-2.0

centos 编译安装 libxml-2.0 下载地址 我下载的 libxml2-2.9.12.tar.gz 版本 下载后解压&#xff0c;进入解压后的目录 执行&#xff1a; ./configure make && make install安装过程中出现 <Pyghon.h> 找不到的问题&#xff0c;指定了路径之后还是找不到&…

来看看这个技术,这才是UPS监控的最好方式!

在现代社会中&#xff0c;信息技术的持续发展使得机房UPS监控变得至关重要。机房是企业信息系统的核心&#xff0c;UPS监控系统能够确保在电力故障或其他问题发生时&#xff0c;机房设备能够持续稳定运行&#xff0c;从而保障数据的安全性和可用性。 客户案例 金融机构 河北某…