当前位置: 首页 > news >正文

WPF 用户控件依赖注入赋值

前言

我一直想组件化得去开发WPF,因为我觉得将复杂问题简单化是最好的

如何组件化开发

在这里插入图片描述

主窗口引用

<Window x:Class="WpfApp1.MainWindow"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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:local="clr-namespace:WpfApp1"xmlns:MD="http://materialdesigninxaml.net/winfx/xaml/themes"xmlns:Views="clr-namespace:WpfApp1.Views"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800" ><Window.Resources><Style x:Key="my_text" TargetType="TextBlock"><Setter Property="FontSize" Value="30" /><Setter Property="Margin" Value="8" /></Style></Window.Resources><Window.DataContext ><!--需要命名来指定数据源--><local:MainWindowViewModel x:Name="viewModel"/></Window.DataContext><Grid><!--不能直接写TitleValue,Binding数据源会有问题--><Views:ViewA Margin="10"Title="{Binding ElementName=viewModel,Path=TitleValue}" /></Grid>
</Window>

cs部分

namespace WpfApp1
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();}}public class MainWindowViewModel{public string TitleValue { get; set; } =  "我是测试数据";}
}

控件窗口

    <UserControl.DataContext><local:ViewAViewModel /></UserControl.DataContext><Grid><TextBlock Text="{Binding Title}" /></Grid>
/// <summary>
/// ViewA.xaml 的交互逻辑
/// </summary>
public partial class ViewA : UserControl
{public static readonly DependencyProperty TitleProperty;/// <summary>/// 为了拿到数据源需要定义一下/// </summary>private ViewAViewModel ViewModel = new ViewAViewModel();public ViewA(){InitializeComponent();ViewModel = (ViewAViewModel)DataContext;}static ViewA(){//静态构造TitleProperty = DependencyProperty.Register("Title", typeof(string), typeof(ViewA),new PropertyMetadata("",new PropertyChangedCallback((item, res) =>{//拿到数据,再次赋值var model =(ViewA)item;model.ViewModel.Title = (string)res.NewValue;})));}/// <summary>/// 只是为了有代码提示,添加依赖属性后不会被调用/// </summary>public string Title { get; set; }}
public partial class ViewAViewModel : ObservableObject
{/// <summary>/// 通知更新/// </summary>[ObservableProperty]private string title = "ViewA Title!";}

相关文章:

WPF 用户控件依赖注入赋值

前言 我一直想组件化得去开发WPF&#xff0c;因为我觉得将复杂问题简单化是最好的 如何组件化开发 主窗口引用 <Window x:Class"WpfApp1.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.…...

leetcode-48.旋转图像

1. 题目 leetcode题目链接 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 2. 编程 矩阵转置&#xff1a; 遍历矩阵&#x…...

antd的RangePicker设置默认值,默认近七天(andt+react)

import moment from "moment";state {initData:[moment().startOf(day).subtract(6, d), moment().endOf(day)], }<FormItem label"产生时间" {...tailItemLayout}>{getFieldDecorator("produceTime", {initialValue: initData})(<Ran…...

大数据可视化模块竞赛Vue项目文件结构与注意事项

1.vue项目src目录下只有两个文件夹与两个js文件,如图所示: 2.asseets目录存放包或其他外部资料 注意 :echarts采用的是引用外部文件导入 let echarts = require(@/assets/echarts.min.js) 3.components目录存放绘制页面的vue文件(我这里示例创建了一个newPage.vue)…...

户外运动盛行,运动品牌如何利用软文推广脱颖而出?

全民健康意识的提升和城市居民对亲近自然的渴望带来户外运动的盛行&#xff0c;这也使运动品牌的市场保持强劲发展势头&#xff0c;那么在激烈的市场竞争中&#xff0c;运动品牌应该如何脱颖而出呢&#xff1f;下面就让媒介盒子告诉你&#xff01; 一、 分享户外运动干货 用户…...

2024年孝感市建筑类中级职称申报资料私企VS国企

2024年孝感市建筑类中级职称申报资料私企VS国企 民营企业中级职称申报跟事业单位或者是国企申报中级职称流程不一样么&#xff1f;实际上流程基本都是相同的&#xff0c;就是提交纸质版资料有点不一样。 孝感市建筑类中级职称申报基本流程 1.参加建筑类中级职称水平能力测试。 …...

OpenResty安装

OpenResty 是一个基于 Nginx 的 Web 平台&#xff0c;它将 Nginx 和 Lua 脚本语言结合起来&#xff0c;提供了更强大的 Web 应用开发和部署能力。OpenResty 仓库是 OpenResty 项目的官方仓库&#xff0c;包含了 OpenResty 的源代码、文档、示例等资源。 OpenResty 仓库地址是&…...

通过stream对list集合中对象的多个字段进行去重

记录下通过stream流对list集合中对象的多个字段进行去重&#xff01; 举个栗子&#xff0c;对象book&#xff0c;我们要通过姓名和价格这两个字段的值进行去重&#xff0c;该这么做呢&#xff1f; distinct&#xff08;&#xff09;返回由该流的不同元素组成的流。distinct&am…...

招投标系统软件源码,招投标全流程在线化管理

功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看所…...

css设置文本溢出隐藏...

在CSS中&#xff0c;文本溢出可以使用text-overflow属性来处理&#xff0c;下面分别介绍单行文本溢出和多行文本溢出的处理方法1&#xff1a; 单行文本溢出。需要使用text-overflow: ellipsis;来显示省略号。需要注意的是&#xff0c;为了兼容部分浏览器&#xff0c;还需要设置…...

【小尘送书-第八期】《小团队管理:如何轻松带出1+1>2的团队》

大家好&#xff0c;我是小尘&#xff0c;欢迎你的关注&#xff01;大家可以一起交流学习&#xff01;欢迎大家在CSDN后台私信我&#xff01;一起讨论学习&#xff0c;讨论如何找到满意的工作&#xff01; &#x1f468;‍&#x1f4bb;博主主页&#xff1a;小尘要自信 &#x1…...

【网络协议】聊聊ifconfig

我们知道在linux是ifconfig查看ip地址&#xff0c;但是ip addr也可以查看 IP 地址是一个网卡在网络世界的通讯地址&#xff0c;相当于我们现实世界的门牌号码。 从IP地址的划分来看&#xff0c;C类地址只可以容纳254个&#xff0c;而B类6W多&#xff0c;那么又没有一种折中的…...

python项目之AI动物识别工具的设计与实现(django)

项目介绍&#xff1a; &#x1f495;&#x1f495;作者&#xff1a;落落 &#x1f495;&#x1f495;个人简介&#xff1a;混迹java圈十余年&#xff0c;擅长Java、小程序、Python等。 &#x1f495;&#x1f495;各类成品java毕设 。javaweb&#xff0c;ssm&#xff0c;spring…...

全流量安全分析发现内部系统外联异常

内部系统外连监控的重要性在于保护企业的信息安全和预防数据泄露&#xff0c;以下是几个重要的理由&#xff1a; 1、检测异常活动&#xff1a;通过监控内部系统的外连连接&#xff0c;可以及时发现是否有未经授权或异常的链接尝试。这可能表示存在恶意软件、黑客攻击或内部员工…...

Edge---微软浏览器-兼容性问题-解决办法(详细)

图片现象&#xff1a; 快捷键&#xff1a;winR &#xff08;进入管理员命令窗口&#xff09; 输入&#xff1a;regedit &#xff08;进入注册表编辑器&#xff09; 点击文件夹&#xff1a;HKEY_LOCAL_MACHINE 找到这个路径的文件项&#xff1a;HKEY_LOCAL_MACHINE\SOFTWARE…...

for循环遍历的`form表单组件`rules规则校验失效问题——下拉框选择之后还是报红---亲测有效

问题: 大概的效果就是这种, for循环选择之后还是还是报红 看文章之前 : 先检查 model rules pops 有没有判定好 解决: 参考了他的 for循环遍历的form表单组件rules规则校验失效问题——输入内容后依然提示必填&#xff0c;亲测有效——基础积累_a-form-model的validat…...

【Python数据分析工具】

文章目录 概要整体架构流程技术名词解释 概要 数据分析是一种通过收集、处理、分析和解释大量数据&#xff0c;以发现有价值信息、洞察趋势、制定决策并解决问题的过程。在现代科技和互联网的推动下&#xff0c;数据分析变得日益重要。它不仅仅是对数字和图表的简单解释&#…...

Python数据挖掘入门进阶与实用案例:自动售货机销售数据分析与应用

文章目录 写在前面01 案例背景02 分析目标03 分析过程04 数据预处理1. 清洗数据2.属性选择3.属性规约 05 销售数据可视化分析1.销售额和自动售货机数量的关系2.订单数量和自动售货机数量的关系3.畅销和滞销商品4.自动售货机的销售情况5.订单支付方式占比6.各消费时段的订单用户…...

2.3_9吸烟者问题

...

位运算基础知识及性质(精简总结)

目录 简介 基础知识 常用性质 简介 程计算机中的数在内存中都是以二进制形式进行存储的&#xff0c;用位运算就是直接对整数在内存中的二进制位进行操作&#xff0c;因此其执行效率非常高&#xff0c;在程序中尽量使用位运算进行操作&#xff0c;这会大大提高程序的性能。 基…...

「5 个 Markdown 文件 + 1 句提示词」让 AI 精准重构你的 React 组件 | 附完整模板

这个场景你一定经历过&#xff1a; 你给 ChatGPT/Claude 一个又臭又长的 React 组件&#xff0c;说&#xff1a;"帮我重构一下&#xff0c;让它更清晰。" 结果要么&#xff1a; 改错了交互逻辑&#xff0c;导致功能崩溃改变了接口契约&#xff0c;后端完全适配不了代…...

告别回调地狱:用Qt信号与槽重构你的第一个GUI应用(Qt6/C++实战)

重构GUI应用&#xff1a;Qt信号与槽的工程化实践 在传统C GUI开发中&#xff0c;我们常常陷入回调函数嵌套的泥潭——按钮点击触发事件处理函数&#xff0c;函数内部又调用其他模块&#xff0c;最终形成难以维护的"面条式代码"。Qt的信号与槽机制为这一困境提供了优雅…...

BepInEx:Unity游戏插件框架的模块化解决方案

BepInEx&#xff1a;Unity游戏插件框架的模块化解决方案 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx是一款针对Unity游戏的插件框架&#xff0c;提供模块化的插件管理与…...

LiTmall:如何用Spring Boot + Vue + 微信小程序构建高效开源电商系统?

LiTmall&#xff1a;如何用Spring Boot Vue 微信小程序构建高效开源电商系统&#xff1f; 【免费下载链接】litemall linlinjava/litemall: LiTmall 是一个基于Spring Boot MyBatis的轻量级Java商城系统&#xff0c;适合中小型电商项目作为基础框架&#xff0c;便于快速搭建…...

WeKnora镜像免配置教程:支持知识库版本管理与灰度问答切换机制

WeKnora镜像免配置教程&#xff1a;支持知识库版本管理与灰度问答切换机制 1. 引言&#xff1a;告别AI幻觉&#xff0c;让知识问答精准可控 你有没有遇到过这种情况&#xff1f;你给AI看了一份产品说明书&#xff0c;然后问它一个具体参数&#xff0c;结果它回答得头头是道&a…...

破局与重构:基于“智慧大脑”的企业全面数据化经营深度解构(PPT)

“在数字时代&#xff0c;企业最大的风险不是数据的匮乏&#xff0c;而是决策依然依赖经验直觉而非数据驱动。” —— 这份《数字化建设企业经营解决方案》文档&#xff0c;不仅是一份技术蓝图&#xff0c;更是对传统企业经营管理模式的一次彻底颠覆。它描绘了一个从“人治”迈…...

领域驱动设计实践:event-sourcing-examples中的DDD聚合模式

领域驱动设计实践&#xff1a;event-sourcing-examples中的DDD聚合模式 【免费下载链接】event-sourcing-examples Example code for my building and deploying microservices with event sourcing, CQRS and Docker presentation 项目地址: https://gitcode.com/gh_mirrors…...

SlopeCraft:Minecraft地图艺术创作的高效解决方案

SlopeCraft&#xff1a;Minecraft地图艺术创作的高效解决方案 【免费下载链接】SlopeCraft Map Pixel Art Generator for Minecraft 项目地址: https://gitcode.com/gh_mirrors/sl/SlopeCraft 在Minecraft的方块世界中&#xff0c;将现实中的图像转化为立体地图艺术一直…...

AI驱动的3D建模革命:PIFuHD开源工具让零基础用户轻松创建高精度数字人

AI驱动的3D建模革命&#xff1a;PIFuHD开源工具让零基础用户轻松创建高精度数字人 【免费下载链接】pifuhd High-Resolution 3D Human Digitization from A Single Image. 项目地址: https://gitcode.com/gh_mirrors/pi/pifuhd 在数字内容创作、游戏开发和AR/VR应用领域…...

智慧城市中的时空AI:从路网数据到拥堵预测的完整项目拆解

智慧城市中的时空AI&#xff1a;从路网数据到拥堵预测的完整项目拆解 在省会城市早高峰的主干道上&#xff0c;交通信号灯与车流形成一场看不见的博弈。传统基于固定配时的信号控制系统&#xff0c;往往在突发拥堵面前显得力不从心。而某市"交通大脑"的落地案例显示&…...