![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
WPF笔记
文章平均质量分 57
WPF笔记,常用控件等
周杰伦fans
我真的非常热爱建筑设计(bushi),希望自己在二开的路上越走越远~越走越远~(/ω\)~
展开
-
C# 中 对象(Object)
对象是类的实例,它具有特定的属性(数据)和行为(方法)。面向对象编程是一种编程范式,它将系统中的数据和操作封装在对象中,通过对象之间的交互来完成任务。类定义了对象的结构和行为,对象是类的实例,属性表示对象的状态,方法表示对象的行为。通过创建和操作对象,我们可以实现更加模块化、可重用和可扩展的代码。在面向对象编程中,一个类是对象的模板,它描述了对象的属性和行为。类定义了对象的结构和行为,并作为对象的蓝图。对象是类的实例,它通过类的构造函数创建。每个对象都具有独立的状态(属性的值)和行为(方法的实现)。原创 2024-05-08 23:28:20 · 404 阅读 · 0 评论 -
WPF (Windows Presentation Foundation) 中 Attribute(属性)和 Property(属性)
在 WPF 中,您可以使用特定的属性来指定控件的外观、行为和其他属性。在 WPF 中,属性是用于描述控件或其他对象的特征和行为的成员。属性可以具有不同的类型,例如字符串、整数、布尔值等,用于存储和获取相关数据。在 WPF 中,Attribute 用于描述控件的外观和行为,而 Property 用于描述控件或其他对象的特征和行为。在 WPF (Windows Presentation Foundation) 中,Attribute(属性)和 Property(属性)是两个相关但不同的概念。原创 2024-05-06 18:45:37 · 597 阅读 · 0 评论 -
C# var 关键字
声明的变量会被编译器转换为对应的实际类型。,因为它只是一种类型推断的语法糖,编译器在编译时会根据初始化表达式的类型来推断变量的具体类型。并不是一种动态类型或弱类型,而是一种静态类型的声明方式,它利用编译器的类型推断能力来为变量分配正确的类型。声明变量时,编译器会根据变量的初始化表达式的类型来推断变量的类型。声明变量时,编译器会根据变量的初始化表达式推断出变量的具体类型,并将其隐式地设置为推断出的类型。声明变量时,编译器会根据变量的初始化表达式推断出变量的具体类型,并将其隐式地设置为推断出的类型。原创 2024-04-28 22:47:42 · 1231 阅读 · 0 评论 -
C#中正则表达式(Regular Expression)
在C#中,正则表达式(Regular Expression)是一种强大的模式匹配工具,用于在文本中搜索、匹配和操作符合特定模式的字符串。正则表达式非常强大且灵活,可以用于各种复杂的模式匹配和字符串操作场景,包括验证输入、提取数据、格式化文本等。详细了解正则表达式的语法和功能,可以更好地利用它在C#中进行字符串处理。正则表达式语法非常丰富和灵活,还有其他更多的字符和功能,例如分组、捕获、零宽断言等。详细了解正则表达式语法和功能,可以在实际使用中更有效地构建和应用正则表达式模式。方法查找所有数字,并使用。原创 2024-04-25 23:12:26 · 1501 阅读 · 0 评论 -
C#中=> “Lambda运算符”
它用于连接Lambda表达式中的参数列表和表达式主体,表示函数的输入和输出关系。总而言之,C#中的Lambda表达式提供了一种简洁、灵活的方式来定义匿名函数,使得编写和传递函数变得更加方便。Lambda运算符的左侧是参数列表,它们是在Lambda函数中使用的输入参数。右侧是表达式,表示Lambda函数的主体,指定了对输入参数的操作和返回值。因此,尽管Lambda运算符没有一个官方的具体名称,但一般来说,它通常被称为“Lambda运算符”或“Lambda箭头”,以指代它在C#中的作用和用途。原创 2024-04-25 23:03:46 · 561 阅读 · 0 评论 -
C#项目中bin目录下
Program Database(程序数据库)的缩写,是一种包含调试信息的文件格式。文件在调试过程中非常有用,它允许开发人员在调试器中进行源代码级别的调试,查看变量的值、跟踪程序的执行流程等等。文件是调试信息文件,用于辅助调试器进行源代码级别的调试。文件可以被其他项目引用,以便在其他项目中使用项目中定义的类型和功能。文件中的代码对应的调试信息,例如源代码的文件名、行号以及变量名。文件,其中包含了项目的编译结果,包括类、方法、变量等等。文件是编译后的可执行文件,可以被其他程序引用和调用,而。原创 2024-04-21 01:24:54 · 537 阅读 · 0 评论 -
C# dynamic 数据类型
由于dynamic类型的灵活性,我们可以在运行时更改变量的类型。但是,由于它会导致类型安全性的损失,应该在必要时才使用dynamic类型,并尽量在编译时指定明确的类型,以获得更好的性能和可维护性。因此,在使用dynamic类型时,需要谨慎处理,并确保在运行时的操作是有效的。使用dynamic类型,可以编写更具灵活性的代码,因为它允许在编译时不指定变量的类型,而是在运行时根据实际情况进行解析。dynamic类型的变量可以存储任何类型的值,并且可以调用任何方法和访问任何属性,而不会在编译时进行严格的类型检查。原创 2024-04-14 11:33:30 · 541 阅读 · 0 评论 -
C# 编程语言中访问修饰符(access modifiers)
protected在 C# 编程语言中,有多个访问修饰符(access modifiers),其中包括protected。这些修饰符用于控制类、成员和属性的访问级别和可见性。protected访问修饰符表示一个成员(字段、属性、方法)或类只能在其定义的类内部和该类的派生类中进行访问。也就是说,protected成员可以在定义它们的类内部直接访问,以及在继承该类的派生类中进行访问。下面是一些对protectedprotected。原创 2024-03-23 10:46:46 · 778 阅读 · 0 评论 -
WPF 中 样式触发器机制 Style.Triggers
每个触发器都关联到一个条件,当条件满足时,触发器中定义的属性设置将被应用到目标控件。触发器可以用于响应各种事件,如属性值的变化、鼠标交互、控件状态等。通过组合不同的触发器,你可以实现更复杂的控件外观和行为的变化。触发器可以响应多个属性的变化,并且可以嵌套使用。添加了一个触发器,当鼠标悬停在按钮上时,触发器中定义的属性设置将生效,将按钮的背景色更改为红色。是一种样式触发器机制,它允许你在特定条件下改变控件的外观或行为。如果你想在其他地方使用触发器,可以考虑使用。元素的子元素,用于定义触发器集合。原创 2024-03-20 22:31:52 · 895 阅读 · 0 评论 -
C# 中 Interpreter 用于解释执行代码的工具
使用 Interpreter 可以执行动态的 C# 代码,这对于一些需要在运行时动态生成和执行代码的场景非常有用,如脚本引擎、插件系统等。在 C# 中,Interpreter 是一个用于解释执行代码的工具,它提供了一种在运行时动态解释和执行 C# 代码的方式。在上面的示例中,我们使用 Interpreter 执行了一个简单的 C# 代码字符串。方法用于获取脚本执行后定义的变量的值。表示执行脚本后的状态,并且可以获取脚本中定义的变量的值。在这个例子中,我们执行了一个简单的脚本,计算了变量。原创 2024-03-05 22:29:41 · 696 阅读 · 0 评论 -
C# 中 TryParse 将字符串转换为特定类型的方法
方法的优点是它不会引发异常,而是通过返回一个布尔值来指示解析的结果。是一个用于将字符串转换为特定类型的方法。它用于尝试解析字符串并将其转换为指定类型的值,而不会引发异常。如果解析成功,它将返回。方法通常用于将字符串转换为数值类型(如整数、浮点数等)或其他基本类型(如布尔值、日期等)。在上面的示例中,我们尝试将字符串 “123” 解析为整数类型。,我们将字符串解析为整数并将结果存储在。是一个输出参数,用于存储解析结果。是一个布尔值,指示解析是否成功。需要注意的是,不同的类型有不同的。,并输出解析失败的消息。原创 2024-03-05 21:56:24 · 1183 阅读 · 0 评论 -
C# 中 Replace 字符串操作方法
字符串开始,先将 “apple” 替换为 “orange”,然后将 “banana” 替换为 “strawberry”,最后将 “cherry” 替换为 “pineapple”。方法执行的是全局替换,即它会替换源字符串中所有匹配的字符或子字符串。是一个字符串操作方法,用于替换字符串中的指定字符或子字符串。,我们将原始字符串中的所有 “world” 替换为 “universe”,并将结果赋给。方法在源字符串中查找所有匹配的字符或子字符串,并用指定的替换字符串进行替换。在上面的示例中,我们有一个原始字符串。原创 2024-03-05 21:50:40 · 1819 阅读 · 0 评论 -
C# 中 Math.Round 数学函数
方法返回的结果类型取决于重载的使用方式。如果使用的是不带小数位数参数的重载,结果将是一个整数类型;如果使用的是带小数位数参数的重载,结果将是一个浮点数类型。它接受一个浮点数作为输入,并返回一个最接近输入值的整数或指定小数位数的浮点数。表示使用标准的四舍五入规则,当小数部分恰好为 0.5 时,舍入到最接近的偶数。表示向远离零的方向舍入,即始终远离零舍入到最接近的整数。四舍五入为最接近的整数,并返回一个整数值。被四舍五入为最接近的整数,即 3。被四舍五入为最接近的整数,即 4。: 这个重载将输入的浮点数。原创 2024-03-05 21:26:08 · 3056 阅读 · 0 评论 -
WPF的DataGrid设置标题头
上述示例中,BorderThickness属性设置为"0,0,0,2"表示只显示底部的分割线,厚度为2个像素;在给定的代码中,列头的内容将水平居中对齐,背景和前景颜色分别为白色和黑色,边框厚度为 1 像素,边框颜色为浅灰色。要设置DataGrid标题头的分割线、背景色和前景色等属性,您可以使用DataGrid的样式和模板来自定义标题头的外观。上述示例中,Foreground属性设置为"#FFFFFF"表示标题头的前景色(文字颜色)为白色。:设置列头的前景颜色(文字颜色)为黑色 (#000000)。原创 2024-03-01 22:01:54 · 2187 阅读 · 0 评论 -
C# Environment.CurrentDirectory 静态属性
可能会受到应用程序启动的方式和上下文的影响。例如,如果在 Visual Studio 中调试应用程序,当前工作目录可能是解决方案文件所在的目录。而在发布后的应用程序中,当前工作目录可能是应用程序的安装目录。默认情况下,工作目录通常是应用程序启动的目录,但在不同环境下可能会有所不同。在上面的示例中,我们首先获取当前的工作目录,并打印出来。然后,我们将工作目录更改为指定的路径,并再次打印新的工作目录。最后,我们使用当前工作目录解析相对路径,得到完整的文件路径。是一个静态属性,它返回当前应用程序的工作目录路径。原创 2024-02-21 12:18:05 · 794 阅读 · 0 评论 -
xUnit 测试项目
断言是一种用于检查代码逻辑和条件的方法,它用于确保程序在运行时满足特定的条件。例如,可以使用断言来检查参数是否为非空、是否满足特定的范围限制等。Assert 断言方法:xUnit 提供了一系列的 Assert 断言方法,用于验证代码的行为和结果。在 xUnit 测试项目中,有一些常用的方法和技巧,可以帮助编写有效的测试代码。异步测试:在 xUnit 中,可以编写异步测试方法,用于测试异步操作和异步代码的行为。测试输出:xUnit 提供了丰富的测试输出功能,可用于记录测试过程中的信息和日志。原创 2024-02-15 10:12:21 · 966 阅读 · 0 评论 -
WPF中ShutdownMode
今天突然发现之前写的程序在窗口关闭之后,进程并没有结束,盘查了一下才发现是设置了ShutdownMode,ShutdownMode属性用于控制应用程序何时终止。当ShutdownMode设置为OnExplicitShutdown时,应用程序不会在窗口关闭时自动终止,而是需要显式调用。时,WPF应用程序的进程会正常结束,并且应用程序的所有资源会被释放。换句话说,进程会在调用。方法后,应用程序的进程会正常结束,不会有残留进程或资源。方法后完全结束,不会保留任何后台进程或资源。方法来手动终止应用程序。原创 2024-02-12 23:54:57 · 613 阅读 · 0 评论 -
系统参数SystemParameters.MinimumHorizontalDragDistance
在上述示例中,我们记录了鼠标按下时的起始点,并在鼠标移动事件中计算鼠标当前位置和起始点之间的水平和垂直移动距离。当用户按下鼠标左键并开始移动鼠标时,系统会检查鼠标的水平移动距离是否超过了 SystemParameters.MinimumHorizontalDragDistance。因为如果鼠标只是稍微移动了一点点,而不是明显地拖动,系统就不会错误地触发拖放操作,从而避免了不必要的干扰。如果水平移动距离超过了最小拖动距离,我们可以认定用户开始了拖动操作,并在相应的事件处理程序中执行相关的操作。原创 2024-02-09 08:52:05 · 506 阅读 · 0 评论 -
WPF 中 Loaded 和 Closing 窗口事件
在窗口即将关闭时,该方法会被调用,并在其中执行相应的操作。在示例中,它会显示一个确认框,询问用户是否确定关闭窗口。如果用户点击 “No”,则通过设置。事件在窗口即将关闭时触发,用于执行清理操作或取消关闭操作。这两个事件提供了在窗口生命周期中重要的时间点执行代码的机会。在窗口加载完成后,该方法会被调用,并在其中执行相应的操作。是两个常用的窗口事件。事件在窗口加载完成后触发,用于执行初始化操作;来取消窗口关闭操作。原创 2024-02-01 20:50:58 · 2260 阅读 · 0 评论 -
WPF的ViewBox控件
是一个用于缩放和调整其子元素大小的容器控件。它可以根据可用空间自动调整子元素的大小,以使其适应ViewBox的边界。这使得在不同尺寸的窗口或布局中保持元素的比例和缩放变得更加容易。,你可以轻松实现对子元素的自适应缩放,以适应不同的布局和尺寸要求。会自动调整子元素的大小,以保持其宽高比并填充整个。控件,设置宽度和高度为200,并使用。这意味着椭圆的宽度和高度将根据。以下是一个示例,说明如何使用。在这个示例中,我们创建了一个。控件,包含一个红色的椭圆(当窗口或布局调整导致。原创 2024-01-27 20:25:37 · 1500 阅读 · 1 评论 -
WPF中的工具栏ToolBar控件
ToolBar(工具栏)是WPF中的一个控件,用于在界面上创建一个水平或垂直的工具栏,以便放置和组织多个按钮或其他控件。通过使用ToolBar,你可以方便地创建和组织多个按钮,并提供一种直观的方式来访问和执行常用功能。你可以使用ToolBar的ToolBar.Separator元素在工具栏中添加水平或垂直的分隔符。样式和外观:你可以自定义ToolBar和ToolBarButton的外观,包括按钮的图标、文本、工具提示等。在每个事件处理程序中,你可以编写相应按钮的功能逻辑,根据需要执行自定义的操作。原创 2024-01-26 07:19:15 · 1673 阅读 · 0 评论 -
WPF中的选项卡布局TabControl控件
在上述示例中,每个TabItem的内容部分都包含不同的控件和布局。你可以根据需要自定义选项卡的标题文本。通过在不同的TabItem中放置不同的内容,你可以实现在选项卡之间切换时显示不同的页面或面板。TabControl提供了一种方便的方式来组织和切换多个相关内容,使用户可以轻松访问和浏览不同的选项卡。选项卡头部用于显示每个选项卡的标题,而选项卡内容则用于显示选中选项卡的相关内容。你可以在TabItem的内容部分放置其他控件、布局或者甚至是自定义的UserControl,以显示选项卡的具体内容。原创 2024-01-26 07:17:26 · 1859 阅读 · 0 评论 -
C#中修饰符(modifiers)
根据使用的上下文和应用程序的需求,选择适当的修饰符来定义和限制代码的访问和行为。:受保护修饰符,用于指定类型或成员只能在其定义的类或结构内部访问,以及派生类中访问。受保护成员对类的外部代码是不可见的,但可以在派生类中访问。在C#中,修饰符(modifiers)是一种关键字,用于修改类型、成员和其他程序元素的行为。:静态修饰符,用于指定类型或成员属于类型本身,而不是类型的实例。:抽象修饰符,用于指定类、方法或属性是抽象的。:私有修饰符,用于指定类型或成员只能在其定义的类或结构内部访问。原创 2023-12-22 13:04:03 · 729 阅读 · 1 评论 -
在C#中异步编程
异步编程帮助我们在后台线程上执行耗时操作,并在操作完成后将结果返回到UI线程上进行显示,从而提高用户体验和应用程序的性能。在C#中,异步编程是一种编写并发和响应式代码的技术,通过将耗时的操作放在后台线程中执行,以避免阻塞主线程,提高程序的性能和响应性。总结而言,C#中的异步编程是一种处理并发和响应式操作的技术,通过将耗时操作放在后台线程中执行,以保持主线程的响应性。需要注意的是,在异步编程中,我们需要处理错误和异常情况,以确保应用程序的稳定性和可靠性。另外,C#还提供了其他的异步编程模式,如使用。原创 2023-12-15 09:44:01 · 208 阅读 · 0 评论 -
C#中的多线程
在C#中,多线程是一种并发编程的技术,允许在同一时间内执行多个线程。每个线程是程序中的独立执行路径,可以同时执行不同的任务,从而提高程序的性能和响应性。C#提供了丰富的多线程编程支持,包括线程创建、同步和通信等功能。线程是一条执行路径,用于执行程序中的代码。原创 2023-12-15 09:41:24 · 268 阅读 · 0 评论 -
WPF 中 AllowsTransparency 属性
属性的主要用途是创建具有特殊外观和效果的窗口,例如自定义形状、阴影、玻璃效果等。通过设置窗口的透明度和不透明度,您可以实现各种视觉效果,从而提供更丰富和吸引人的用户界面。属性的窗口会增加一定的性能开销,并且可能会导致一些兼容性问题。此外,使用透明窗口时,需要小心处理鼠标事件、拖动和调整窗口大小等功能,以确保用户体验的一致性和正确性。属性允许您创建具有透明度的窗口,从而实现各种特殊的外观和效果。时,窗口可以具有透明度,允许您创建具有非矩形形状和半透明效果的窗口。是一个布尔属性,用于指示窗口是否支持透明度。原创 2023-12-14 16:19:01 · 813 阅读 · 0 评论 -
WPF的WebBrowser控件
控件使用的是 Internet Explorer 内核,它将继承 Internet Explorer 的功能和限制,可能存在与现代 Web 标准的兼容性问题。在某些情况下,需要特殊的设置或考虑到与 Internet Explorer 的兼容性问题,可能需要额外的设置或使用其他技术来显示网页内容,如使用 WebView2 控件(基于 Chromium 内核)或使用第三方浏览器控件。内嵌网页浏览器:在一些应用程序中,需要将网页作为一部分嵌入到应用程序中,以提供网页浏览的功能。控件将会加载并显示指定的网页内容。原创 2023-12-12 20:23:45 · 1704 阅读 · 0 评论 -
WPF(Windows Presentation Foundation) 的 Menu控件
注意,为了使命令能够在 ViewModel 中正确地执行操作,你可能需要在 ViewModel 类中实现其他必要的逻辑和属性。菜单通常位于应用程序窗口的顶部,并提供了一组命令或选项,用于导航到不同的功能区域、执行特定的操作或访问特定的功能。通过 Menu 控件和其子元素的组合,你可以创建一个具有层级结构的菜单,用于提供应用程序的功能和命令的导航和操作。属性和命令模式,可以在 WPF 的 Menu 中绑定命令,实现菜单项与特定操作之间的关联。在 ViewModel 中,你需要创建并实现这些命令。原创 2023-12-09 00:39:44 · 561 阅读 · 0 评论 -
WPF(Windows Presentation Foundation)的 ToolBar控件
通过 ToolBar 控件和其子元素的组合,你可以快速创建一个具有常用工具按钮的工具栏,并为用户提供方便的访问应用程序功能和命令的方式。工具栏通常位于应用程序窗口的顶部或侧边,并提供了一组常用的工具按钮或命令,用于执行特定的操作或访问特定的功能。在这个示例中,ToolBar 控件包含了几个 Button 子元素,每个按钮代表一个特定的功能或命令。你可以根据应用程序的需求,自定义工具栏的内容和样式,以便满足特定的用户界面设计要求。每个工具按钮通常代表一个特定的功能或命令,比如保存、打印、剪切、复制、粘贴等。原创 2023-12-09 00:03:50 · 353 阅读 · 0 评论 -
WPF(Windows Presentation Foundation)的 StatusBar控件
在这个示例中,主内容区域位于上方的 Grid 中,StatusBar 控件位于底部。StatusBar 控件是 WPF 中的一个容器控件,它可以包含多个子元素,用于显示不同的状态信息。通过 StatusBar 控件,你可以在应用程序中实现类似于文件加载状态、进度更新、网络连接状态等各种状态的展示。它通常位于应用程序窗口的底部,并提供一些常见的功能,如显示进度、状态文本、通知等。通过 StatusBar 控件和其子元素的组合,你可以根据应用程序的需求,自定义状态栏的内容和样式,以便提供有用的状态信息给用户。原创 2023-12-08 23:55:15 · 821 阅读 · 0 评论 -
“低代码开发:快餐大厨还是魔术棒?探寻软件开发的诙谐世界“
低代码是指使用可视化开发工具和组件来创建应用程序的开发方法。它提供了一种更快、更简单的开发方式,使开发人员能够通过拖放、配置和少量的手动编码来构建应用程序。总结起来,对于C#而言,低代码意味着使用可视化工具和组件,以及少量手动编码来快速构建应用程序。通过这种方式,你可以更快速、更简单地开发应用程序,减少了繁琐的编码工作,让你专注于业务逻辑和用户体验的实现。原创 2023-12-08 00:22:14 · 1340 阅读 · 0 评论 -
WPF转换器Convert
然后,在界面的代码中,需要将该视图模型设置为界面的数据上下文(DataContext)。这样,视图模型中的属性就能够与界面上的元素进行绑定。在这个转换器中,我们将输入的值(图像路径)转换为图像文件名。属性中,并将该视图模型设置为界面的数据上下文。图像名称转换器ImageNameConverter,用于在数据绑定中将图像路径转换为图像文件名。的值,并将转换后的结果作为图像的源(Source)进行显示。,可以方便地将图像路径转换为图像文件名,并在界面上进行显示。,那么经过转换后,图像的源将变为。原创 2023-12-07 13:01:56 · 755 阅读 · 0 评论 -
C#中的Fody
然后,通过在 XAML 中使用 {Binding} 语法,将 TextBlock 的 Text 属性与 Name 属性进行绑定,将 TextBox 的 Text 属性与 Age 属性进行绑定。当 Person 对象的 Name 或 Age 属性值发生变化时,Fody 自动生成的属性通知代码将触发 PropertyChanged 事件,通知绑定目标更新显示。Fody中的插件 “PropertyChanged” 可以自动为你的类实现属性通知,而无需手动编写大量的重复代码。这样的实现需要编写大量重复的代码。原创 2023-11-22 22:39:57 · 1217 阅读 · 0 评论 -
WPF基础DataGrid控件
这个示例中的 DataGrid 演示了一个简单的表格布局,其中包含了常见的文本列和按钮列。你可以根据需求自定义列定义,使用不同的列类型和绑定方式。列标题 (Column Headers): 列标题显示在每一列的顶部,用于描述该列的内容。列定义部分包含了三个列:ID、姓名和年龄文本列,以及一个包含编辑按钮的按钮列。列定义 (Columns): DataGrid 列定义了要显示的数据列及其属性绑定。它提供了丰富的功能,包括排序、筛选、分组、编辑、选择等,使你能够以类似电子表格的方式呈现和操作数据。原创 2023-11-22 22:15:53 · 598 阅读 · 0 评论 -
WPF的_Expander控件
Expander 控件通常由一个展开/折叠的标题(Header)和一个显示/隐藏的内容部分(Content)组成。WPF Expander 是 WPF(Windows Presentation Foundation)框架中的一个控件,用于实现可以展开和折叠内容的可折叠面板。总之,Expander 控件在 WPF 中提供了一种简单而有效的方法来实现可折叠的内容面板,可以帮助用户更好地组织和控制界面上的信息。Expander 控件还提供了一些其他属性和事件,可以进一步自定义其行为和样式,例如。原创 2023-09-12 23:48:58 · 1659 阅读 · 0 评论 -
WPF常用的布局方式
例如,以下 XAML 代码显示一个 Grid,其中包含四个 Button 控件。其中,第一个 Button 控件位于第一行第一列,第二个 Button 控件位于第一行第二列,第三个 Button 控件位于第二行第一列,第四个 Button 控件位于第二行第二列。例如,以下 XAML 代码显示一个 Canvas,其中包含两个 Button 控件。其中,第一个 Button 控件位于 Canvas 的左上角,第二个 Button 控件位于 Canvas 的右下角。使用这些布局方式可以轻松地实现复杂的界面布局。原创 2023-04-26 08:14:08 · 1595 阅读 · 0 评论 -
C# IValueConverter接口
在上面的示例中,实现了将 DateTime 对象转换为字符串的转换器。Convert 方法将 DateTime 对象转换为字符串,并将其显示在界面上。在上面的示例中,使用 Window.Resources 中定义的 DateTimeToStringConverter 将 LastUpdated 属性转换为字符串。该接口定义了一个用于将一个值转换为另一个值的转换器。IValueConverter 接口的实现可以用于各种情况,比如在用户界面上显示时间戳、将布尔值转换为可见性等。原创 2023-04-20 06:52:49 · 379 阅读 · 0 评论 -
C# BitmapImage
new Uri(path) 创建一个新的 Uri 对象,表示指定路径的图片文件的 URI 地址。由于在 WPF 中,大部分属性都是依赖属性(Dependency Property),需要通过依赖属性系统进行注册、更改和通知,因此在代码中设置属性时,需要通过。例如,在 Image 控件中设置 Source 属性为 image,即可显示 @“C:\images\test.png” 路径下的图片文件。对象要显示的图片文件的 URI 地址。创建一个新的 Uri 对象,来表示指定路径的图片文件的 URI 地址。原创 2023-04-13 08:04:19 · 1378 阅读 · 0 评论 -
WPF-MVVMLight
在这个示例中,ViewModel类继承了MVVMLight框架的ViewModelBase类。在ViewModel类中,我们定义了一个Message属性,并且在构造函数中初始化了这个属性。MVVM是Model-View-ViewModel的缩写,它是一种软件设计模式,将用户界面(UI)与应用程序的逻辑和数据分离。MVVMLight是一个轻量级的MVVM框架,用于帮助开发人员在WPF和Silverlight应用程序中实现MVVM模式。这个简单的MVVMLight应用程序演示了如何使用框架来实现MVVM模式。原创 2023-04-12 07:36:04 · 243 阅读 · 0 评论 -
WPFMVVM模式 BaseViewModel
BaseViewModel 是一个通用的基础类,通常用作 WPF/MVVM 架构中 ViewModel 的基类,其主要作用是提供了一些常用的功能和属性,以减少在具体 ViewModel 中的代码量,提高代码的复用性。该 LoginViewModel 类继承了 BaseViewModel 类,并实现了一个字符串类型的 Username 属性,通过调用 RaisePropertyChanged 方法通知数据绑定系统属性值的更改。原创 2023-04-09 14:40:56 · 576 阅读 · 0 评论