首页 > 其他分享 >一起搭WPF架构之界面绑定显示

一起搭WPF架构之界面绑定显示

时间:2024-08-27 16:26:20浏览次数:13  
标签:界面 定义 UIElement 绑定 MainModel 架构 WPF 属性

一起搭WPF架构之界面绑定显示


1 前言

之前的许多介绍,已经完成界面搭建的熟悉内容,现在在搭建的基础上完成简单的界面切换。


2 定义文件

我们在已有项目中需要定义两个CS文件,在这个两个CS文件中,我们可以在MainModel.cs中定义对应的属性,然后在MainViewModel.cs中对MainModel 类使用,再同步更新到对应的UI界面中,从而实现MVVM模式。
在这里插入图片描述

3 定义属性

MainModel.cs中定义属性。UIElement 是一个非常基础和核心的类,它是几乎所有可视化元素的基类。UIElement 类提供了许多用于处理用户输入、布局、渲染和其他UI功能的属性和方法。
我们还是使用到了NotifyChanged 方法,设置新值时调用 NotifyChanged 方法,可用于后台数据更新时刷新界面数据。

class MainModel
{
    private UIElement _mainContent;

    public UIElement MainContent
    {
        get { return _mainContent; }
        set { _mainContent = value; this.NotifyChanged(); }
    }
}

4 控制器使用

我们定义MainModel类,用这个类的属性获取对应的UI元素名称,然后方法内部使用 Type.GetType(name) 获取相应的 Type 对象,然后使用 Activator.CreateInstance(type) 创建这个类型的实例,最终达到调用显示的效果。

public MainModel MainModel { get; set; } = new MainModel();
private void NavPage(string name)
{
    Type type = Type.GetType(name);
    this.MainModel.MainContent = (System.Windows.UIElement)Activator.CreateInstance(type);
}

public MainViewModel()
{
    this.NavPage("InterfacialDesign.Views.DataModelViews");
}

5 界面内容绑定

这里就是最简单的界面数据绑定,我们在后台使用MainModel类,在控制器对MainModel类的属性进行赋值,更新界面元素。

<ContentControl Content="{Binding MainModel.MainContent}"/>

ContentControl——一个可以显示单个对象的内容的控件,它非常适合用于绑定到可能改变的UIElement

6 界面效果

第一个界面是Mainwindow界面,没有按钮。
第二个是DataModelViews界面,添加一个按钮。
第三个是最终效果。
在这里插入图片描述


总结

本文仅仅简单介绍了界面绑定显示的方法,但是默认了界面显示,后续需要根据按钮进行界面切换。

标签:界面,定义,UIElement,绑定,MainModel,架构,WPF,属性
From: https://blog.csdn.net/arriettyandray/article/details/140602961

相关文章

  • 一起搭WPF之列表数据绑定
    一起搭WPF之列表数据绑定1前言2数据绑定2.1前端2.2后端实现2.2.1界面后台2.2.2模型与逻辑3问题3.2解决总结1前言之前已经简单介绍了列表的大致设计,在设计完列表界面后,我们可以开展列表的数据绑定,在前端显示我们的数据,对列表进行数据输入。那么让我们开......
  • WPF 自定义路由事件的实现
    路由事件通过EventManager,RegisterRoutedEvent方法注册,通过AddHandler和RemoveHandler来关联和解除关联的事件处理函数;通过RaiseEvent方法来触发事件;通过传统的CLR事件来封装后供用户使用。如何实现自定义路由事件,可以参考MSDN官网上的文档:如何:创建自定义路由事件下面的这个......
  • WPF 数据校验
    一、新建NameValidationRule类publicclassNameValidationRule:ValidationRule{publicoverrideValidationResultValidate(objectvalue,CultureInfocultureInfo){varlength=value.ToString().Length;if(length......
  • WPF C# split picture into small pieces and show in grid cells
    usingSystem;usingSystem.Collections.Generic;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Data;usingSystem.Windows.Documents;using......
  • Apache SeaTunnel技术架构演进及其在AI领域的应用
    随着数据集成需求的增长,ApacheSeaTunnel作为新一代的数据同步引擎,不仅在技术架构上不断演进,也在AI领域展现出其独特的应用价值。在CommunityOverCodeAsia2024大会上,ApacheSeaTunnelPMCChair高俊深入探讨SeaTunnel的技术演进路径,分析其在AI领域的应用案例,并展望未来的发展......
  • WPF 模板
    一、数据模板继承了ItemConrol的控件对象(如ListView、ListBox、DataGrid、TabControl等等),都可以使用数据模板DataTemplate。数据模板的作用在于决定每个Item中的数据的展示形式。普通控件通过Template属性来定义模板,而子项容器控件则通过ItemTemplate属性来定义子项模板。先创......
  • 从主流技术架构视角剖析 Java Web 项目的性能测试策略与挑战
    随着互联网应用的不断发展,JavaWeb项目在企业级应用中占据了重要地位。然而,如何在复杂的技术架构下,确保项目的高性能和稳定性,成为了每个开发与测试团队无法回避的难题。今天,我们将从主流技术架构的视角,深度剖析JavaWeb项目的性能测试策略与面临的挑战,为你揭开性能优化的神......
  • GPT多模态大模型与AI Agent智能体系列一》大模型企业应用落地》基于大模型的对话式推
    注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】文章目录GPT多模态大模型与AIAgent智能体系列一基于大模型的对话式推荐系统》对话式推荐系统技术架构设计基于大模型的......
  • 计算机毕业设计-基于Java+SSM架构的高校毕业生就业管理系统项目开发实战(附源码+论文)
    大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。......
  • WPF中如何根据数据类型使用不同的数据模板
    我们在将一个数据集合绑定到列表控件时,有时候想根据不同的数据类型,显示为不同的效果。例如将一个文件夹集合绑定到ListBox时,系统文件夹显示为不同的效果,就可以使用模板选择器功能。WPF提供了一个模板选择器类型DataTemplateSelector,它可以根据数据对象和数据绑定元素来选择 Dat......