stackpanel

【我们一起写框架】MVVM的WPF框架(二)—绑定

南笙酒味 提交于 2020-05-03 20:29:40
MVVM的特点之一是实现数据同步,即,前台页面修改了数据,后台的数据会同步更新。 上一篇我们已经一起编写了框架的基础结构,并且实现了ViewModel反向控制Xaml窗体。 那么现在就要开始实现数据同步了。 DataContext—数据上下文 在实现数据同步前,我们要了解一个知识点——DataContext。 WPF中每个UI都有一个Content和一个DataContext,那么Content和DataContext是什么呢? Content: Content是指页面内容,即我们编写的代码,或者认为它是展示的UI。 打个比方,Content就是HTML页面中的标签,如【<html></html】;那么,在WPF中Content是指的就是Xaml页面的标签了。 DataContext: DataContext是指页面中的数据内容,这部分内容只有运行了才存在,用过ASP.NET MVC的同学可以把它理解为MVC中的Model。(每个页面都有一个唯一的指定Model) 既然在WPF里DataContext就是MVC中的Model。那么,自然的,DataContext就要存储页面的ViewModel了,所以,我们为它赋值它自身对应的ViewModel。 现在,找到我们的BaseViewModel的构造函数,加入这行代码[UIElement.DataContext = this;]

WPF Geometry 添加Path数据

浪子不回头ぞ 提交于 2020-05-02 02:18:03
原文: WPF Geometry 添加Path数据 当图片转svg,svg转Xaml后,根据数据加载显示图片 DrawingImage: 1 < DrawingImage x:Key ="Image.Search" > 2 < DrawingImage.Drawing > 3 < GeometryDrawing > 4 < GeometryDrawing.Brush > 5 < SolidColorBrush Color ="#FF666666" Opacity ="0.5" /> 6 </ GeometryDrawing.Brush > 7 < GeometryDrawing.Geometry > 8 < PathGeometry FillRule ="Nonzero" 9 Figures ="M6.5,2C4.01471853256226,2 2,4.01471853256226 1.99999988079071,6.5 2,8.98528099060059 4.01471853256226,11 6.5,11 8.98528099060059,11 11,8.98528099060059 11,6.5 11,4.01471853256226 8.98528099060059,2 6.5,2z M6.5,1.00000011920929C9.53756618499756,1

C# WPF抽屉效果实现(C# WPF Material Design UI: Navigation Drawer & PopUp Menu)

眉间皱痕 提交于 2020-04-28 21:23:02
时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform、WPF、ASP.NET Core等,亦有C++桌面相关的Qt Quick和Qt Widgets等,只分享自己熟悉的、自己会的。 一、先看效果: 二、本文背景 有网友给站长Dotnet9留言:“WPF中能否实现UWP中SplitView效果,即抽屉效果吗?” Dotnet9记得国外开源C# WPF控件库 MaterialDesignInXaml 中有这种效果,可以查看本站写的推荐文章: MaterialDesignInXaml控件介绍 ,站长也是个喜欢码砖的人,对代码是很感兴趣的,遂Google了一个YouTube视频敲出本文实现的代码,希望对他和您有用。 三、代码实现 站长使用.Net Core 3.1创建的WPF工程,创建PopUpAndNav解决方案后,需要添加两个Nuget库:MaterialDesignThemes和MaterialDesignColors。 添加Material两个库 工程比较简单,主要就是演示窗口MainWindow: 解决方案结构 代码不多,我就全部贴上代码吧。 添加MaterialDesignInXaml样式:App.xaml 1 <

C# WPF抽屉效果实现(C# WPF Material Design UI: Navigation Drawer & PopUp Menu)

拜拜、爱过 提交于 2020-04-28 19:32:19
时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform、WPF、ASP.NET Core等,亦有C++桌面相关的Qt Quick和Qt Widgets等,只分享自己熟悉的、自己会的。 一、先看效果: 二、本文背景 有网友给站长Dotnet9留言:“WPF中能否实现UWP中SplitView效果,即抽屉效果吗?” Dotnet9记得国外开源C# WPF控件库 MaterialDesignInXaml 中有这种效果,可以查看本站写的推荐文章: MaterialDesignInXaml控件介绍 ,站长也是个喜欢码砖的人,对代码是很感兴趣的,遂Google了一个YouTube视频敲出本文实现的代码,希望对他和您有用。 三、代码实现 站长使用.Net Core 3.1创建的WPF工程,创建PopUpAndNav解决方案后,需要添加两个Nuget库:MaterialDesignThemes和MaterialDesignColors。 添加Material两个库 工程比较简单,主要就是演示窗口MainWindow: 解决方案结构 代码不多,我就全部贴上代码吧。 添加MaterialDesignInXaml样式:App.xaml 1 <

《深入浅出WPF》学习总结之控件与布局

会有一股神秘感。 提交于 2020-04-28 18:49:45
一、控件到底是什么   控件的本质是“数据+算法”——用户输入原始数据,算法处理原始数据并得到结果数据。问题就在于程序如何将结果数据展示给用户。同样一组数据,你可以使用LED阵列显示出来,或者是以命令行模式借助各种控制字符(如Tab)对其并输出,但这些都不如图形化用户界面(Graphics User Interface ,GUI)来的友好和方便。GUI是程序界的优胜者,但在Windows上实现图形化界面有很多中方法。每种方法又拥有自己的一套开发理念和工具。每种GUI开发与它的里理念和工具共同组成一种方法论。常见的有: Windows API (Win API):调用Windows底层绘图函数,使用C语言,最原始也最基础。 Microsoft Foundation Class(MFC):使用C++语法将原始的Win32 API封装成控件类。 Visual Component Library(VCL):Delphi 和C++Builder使用的与MFC相近的控件类库 Vistal Basic+ActiveX控件(VB6):使用组件化的思想把Win API 封装成UI控件,已其多语言共用 Java Swing/AWT:Java SDK中用于跨平台开发GUI程序的控件类库 Windows Form:.NET平台上进行GUI开发的老牌劲旅,完全组件化但需要.NET运行时支持。 Windows

演练:我的第一个 WPF 桌面应用程序 https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/getting-started/walkt...

試著忘記壹切 提交于 2020-04-28 02:00:25
这篇文章演示如何开发简单的 Windows Presentation Foundation (WPF) 应用程序包括元素所共有的大多数 WPF 应用程序: 可扩展应用程序标记语言 (XAML) 标记、 代码隐藏、 应用程序定义控件、 布局、 数据绑定和样式。 本演练包含以下步骤: 使用 XAML 设计应用程序的用户界面 (UI) 的外观。 编写代码以生成应用程序的行为。 创建应用程序定义管理应用程序。 添加控件并创建布局以构成应用程序 UI。 创建在应用程序的 UI 整个一致的外观样式。 绑定到数据填充数据从用户界面的同时保护数据和 UI 同步的用户界面。 本演练结束时,您将构建的独立 Windows 应用程序,用户可查看所选人员的费用报销。 该应用程序由多个浏览器样式窗口中承载的 WPF 页面。 提示 用于生成本演练的示例代码是适用于 Visual Basic 和 C# 在 生成 WPF 应用程序简介 。 系统必备 Visual Studio 2012 或更高版本 有关安装最新版本的 Visual Studio 的详细信息,请参阅 安装 Visual Studio 。 创建应用程序项目 第一步是创建应用程序基础结构,其中包括应用程序定义、 两个页面和映像。 创建新的 WPF 应用程序项目中 Visual Basic 或 Visual C# 名为ExpenseIt: 打开

【WPF学习】第十六章 键盘输入

五迷三道 提交于 2020-04-22 01:27:51
  当用户按下键盘上的一个键时,就会发生一系列事件。下表根据他们的发生顺序列出了这些事件: 表 所有元素的键盘事件(按顺序)   键盘处理永远不会像上面看到的这么简单。一些控件可能会挂起这些事件中的某些事件,从而可执行自己更特殊的键盘处理。最明显的例子是TextBox控件,它挂起了TextInput事件。对于一些按键,TextBox控件还挂起了KeyDown事件,如方向键。对于此类情形,通常仍可使用隧道路由事件(PreviewTextInput和PreviewKeyDown事件).   TextBox控件还添加了名为TextChanged的新事件。在按键导致文本框中的文本发生改变之后立即引发该事件。这时,在文本框中已经可以看到新的文本,所以阻止不需要的按键已为时太晚。 一、处理按键事件   理解键盘事件的最好方式是使用简单的示例程序,如下图所示。该例在一个文本框中监视所有可能的键盘事件,并在发生时给出报告。下图显示了文本框中输入大写A键时结果。   上面示例的完整代码如下所示: < Window x:Class ="KeyEvents.MainWindow" xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x ="http://schemas.microsoft.com/winfx

【WPF学习】第十六章 键盘输入

大憨熊 提交于 2020-04-21 13:37:57
  当用户按下键盘上的一个键时,就会发生一系列事件。下表根据他们的发生顺序列出了这些事件: 表 所有元素的键盘事件(按顺序)   键盘处理永远不会像上面看到的这么简单。一些控件可能会挂起这些事件中的某些事件,从而可执行自己更特殊的键盘处理。最明显的例子是TextBox控件,它挂起了TextInput事件。对于一些按键,TextBox控件还挂起了KeyDown事件,如方向键。对于此类情形,通常仍可使用隧道路由事件(PreviewTextInput和PreviewKeyDown事件).   TextBox控件还添加了名为TextChanged的新事件。在按键导致文本框中的文本发生改变之后立即引发该事件。这时,在文本框中已经可以看到新的文本,所以阻止不需要的按键已为时太晚。 一、处理按键事件   理解键盘事件的最好方式是使用简单的示例程序,如下图所示。该例在一个文本框中监视所有可能的键盘事件,并在发生时给出报告。下图显示了文本框中输入大写A键时结果。   上面示例的完整代码如下所示: < Window x:Class ="KeyEvents.MainWindow" xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x ="http://schemas.microsoft.com/winfx

【WPF学习】第三十章 元素绑定——绑定到非元素对象

余生颓废 提交于 2020-04-21 05:52:58
  前面章节一直都在讨论如何添加链接两个各元素的绑定。但在数据驱动的应用程序中,更常见的情况是创建从不可见对象中提取数据的绑定表达式。唯一的要求是希望显示的信息必须存储在公有属性中。WPF数据绑定数据结构不能获取私有信息或公有字段。   当绑定到非元素对象时,需要放弃Binding.ElementName属性,并使用以下属性中的一个:    Source :该属性是指向源对象的引用——换句话说,是提供数据的对象。    RelativeSource :这是引用,使用RelateSource对象指向源对象。有了这个附加层,可在当前元素(包含绑定表达式的元素)的基础上构建引用。这似乎无谓地增加了复杂程度。但实际上,RelativeSource属性是一种特殊工具,当编写控件模板以及数据模板时很方便的。    DataContext :如果没有使用Source或RelativeSource属性指定源,WPF就从当前元素开始在元素树中向上查找。检查每个元素的DataContext属性,并使用第一个非空的DataContext属性。当我要将同一个对象的多个属性绑定到不同的元素时,DataContext属性是非常有用的,因为可在更高层次的容器对象上(而不是直接在目标元素上)设置DataContext属性。 一、Source属性   Source属性非常简单。唯一的问题是为了进行绑定

【WPF学习】第三十章 元素绑定——绑定到非元素对象

╄→гoц情女王★ 提交于 2020-04-20 13:03:32
  前面章节一直都在讨论如何添加链接两个各元素的绑定。但在数据驱动的应用程序中,更常见的情况是创建从不可见对象中提取数据的绑定表达式。唯一的要求是希望显示的信息必须存储在公有属性中。WPF数据绑定数据结构不能获取私有信息或公有字段。   当绑定到非元素对象时,需要放弃Binding.ElementName属性,并使用以下属性中的一个:    Source :该属性是指向源对象的引用——换句话说,是提供数据的对象。    RelativeSource :这是引用,使用RelateSource对象指向源对象。有了这个附加层,可在当前元素(包含绑定表达式的元素)的基础上构建引用。这似乎无谓地增加了复杂程度。但实际上,RelativeSource属性是一种特殊工具,当编写控件模板以及数据模板时很方便的。    DataContext :如果没有使用Source或RelativeSource属性指定源,WPF就从当前元素开始在元素树中向上查找。检查每个元素的DataContext属性,并使用第一个非空的DataContext属性。当我要将同一个对象的多个属性绑定到不同的元素时,DataContext属性是非常有用的,因为可在更高层次的容器对象上(而不是直接在目标元素上)设置DataContext属性。 一、Source属性   Source属性非常简单。唯一的问题是为了进行绑定