首页 > 其他分享 >WPF_全局静态变量并且实现变更通知

WPF_全局静态变量并且实现变更通知

时间:2024-05-27 23:23:20浏览次数:37  
标签:xmlns 变量 静态 using WPF 全局

WPF_全局静态变量并且实现变更通知
当我是开发WPF时可能会出现一个数据在多个页面使用的情况或者获取的数据在工具类里面需要更新到界面上,这时候就可以使用全局静态变量来实现界面的更新.

第一步:编写全局静态变量并创建变更通知
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WPF_全局静态变量并且实现变更通知.Setting
{
public class AppSetting
{
/// <summary>
/// 新建静态属性变更通知
/// </summary>
public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;

private static int _testValue = 0;
public static int TestValue
{
get
{
return _testValue;
}
set
{
_testValue = value;
//调用通知
StaticPropertyChanged?.Invoke(null, new PropertyChangedEventArgs(nameof(TestValue)));
}
}

private static string _Name = "初始值";
public static string Name
{
get
{
return _Name;
}
set
{
_Name = value;
//调用通知
StaticPropertyChanged?.Invoke(null, new PropertyChangedEventArgs(nameof(Name)));
}
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
第二步:添加local,原始版本MVVM框架是自带这个属性的 ,有的框架会省略.
xmlns:local="clr-namespace:WPF_全局静态变量并且实现变更通知.Setting"
1
第三步:添加引用
<Window.Resources>
<local:AppSetting x:Key="AppSetting" />
</Window.Resources>
1
2
3
第四步:绑定实例
Text="{Binding TestValue, Source={StaticResource AppSetting}}" />
1
实例如下
<Window
x:Class="WPF_全局静态变量并且实现变更通知.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:av="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WPF_全局静态变量并且实现变更通知.Setting"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:prism="http://prismlibrary.com/"
Title="{Binding Title}"
Width="525"
Height="350"
prism:ViewModelLocator.AutoWireViewModel="True"
mc:Ignorable="av">
<Window.Resources>
<local:AppSetting x:Key="AppSetting" />
</Window.Resources>
<Grid>
<TextBlock
Margin="75,50,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
FontSize="60"
Text="{Binding TestValue, Source={StaticResource AppSetting}}" />
<TextBox
Width="120"
Margin="30,15,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="{Binding Name, Source={StaticResource AppSetting}}"
TextWrapping="Wrap" />
<Button
Margin="180,14,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Command="{Binding ceshi1}"
Content="Button" />
</Grid>
</Window>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
总结:当界面更改是 后台静态变量的值也会更改,当变量更改时,界面也会随之更改.可以在多个页面绑定同一个后台静态变量.节省更多的代码

2023.4.22


————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/qq1084517825/article/details/130299387

标签:xmlns,变量,静态,using,WPF,全局
From: https://www.cnblogs.com/webenh/p/18216824

相关文章

  • WPF开发01-数据绑定的几种方式,静态,动态、向上查找、适应各种情况
    1.前后端简单绑定第一种比较常见,常见于mvvm框架前端<TextBlockText="{BindingPath=Name}"></TextBlock>1后端publicclassPersonViewModel:INotifyPropertyChanged{publicstringName{get{returnname;}set{if(name......
  • Wpf经验技巧-使用 d:DataContext 指定 DataContext 的类型.
    VM代码:V代码(版本1):没有指定DataContext的类型,所以下面的绑定并不知道P1和P3到底是什么,也就无法在代码编辑时检测出绑定是否正确.如果写错了,只能等到程序运行并打开这个窗口时报错才能知道.V代码(版本2):通过d:DataContext指定了DataContext的类型,所以下面的绑定可以知道......
  • 一步一步实现WPF透明化窗口
    这一篇教程讲述如何实现透明窗体和透明控件,在WindowStyle设置为none情况下拖拽窗口,半透明作为较容易实现的一种美观化,对于大多数美工较弱的开发者来说实用性不错,能在一些平面化设计场合发挥简单而有效的美化效果。  实现效果1:窗体整体半透明   实现效果2:窗体全透明......
  • WPF设置Button的Style
    扣扣技术交流群:460189483一、前言程序界面上的按钮多种多样,常用的就这几种:普通按钮、图标按钮、文字按钮、图片文字混合按钮。本文章记录了不同样式类型的按钮实现方法。下面话不多说了,来一起看看详细的介绍吧。二、固定样式的按钮固定样式的按钮一般在临时使用时或程序的样式......
  • WPF在ListView中绑定Command命令的写法
    假定:ViewModel中有一个数据源叫Persons,有一个命令叫DoCommand,通过System.Windows.Interactivity触发器绑定鼠标MouseUp事件,当UI端绑定了DataContext数据上下文之后,Command="{BindingDoCommand}"是找不到这个命令的,必须使用Binging类的RelativeSource属性先找到当前UI,再找到DataC......
  • WPF之单例模式
    项目2019/10/09 问题2019年10月9日星期三上午2:461、为了实现单例模式,在App类中添加了如下代码,使用了信号量,但是为什么返回;isNew一直为truepublicpartialclassApp:Application   {       protectedoverridevoidOnStartup(StartupEventArgs......
  • WPF DataGrid使用 自动显示行号、全选、三级联动、拖拽
    1.DataGrid的使用自动显示行号(修复删除行时行号显示不正确)  ViewCodedgTool.LoadingRow+=newEventHandler<DataGridRowEventArgs>(dgTool_LoadingRow);dgTool.UnloadingRow+=newEventHandler<DataGridRowEventArgs>(dgTool_UnloadingRow);voi......
  • WebView2在WPF中的应用
    开发环境运行环境:.Net6开发环境:VisualStudio202217.1.3框架语言:WPF安装WebView2通过PackageManager控制台安装Install-PackageMicrosoft.Web.WebView2通过Nuget包管理器安装在窗体中添加名字空间:xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;asse......
  • C# wpf之控制屏幕显示方向旋转
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Runtime.InteropServices;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows;usingSystem.Windows.Controls;usingSystem.Windows.Data;usingSystem.Windows.Documents......
  • 利用PyCSP3库(含大量全局约束)进行组合约束建模
    文章目录1.什么是PyCSP3?2.安装方法(Windows)2.1通过Google_colab直接运行2.2通过pip进行安装3.快速入门3.1声明变量3.2更新约束3.3定义目标3.4常用的全局约束1.什么是PyCSP3?PyCSP3是Python中的一个库,用于对组合约束问题进行建......