zoukankan      html  css  js  c++  java
  • C#通过事件跨类调用WPF主窗口中的控件

    xaml.cs文件:

     1 using System;
     2 using System.Timers;
     3 using System.Windows;
     4 using System.Windows.Forms;
     5 namespace ControlUsed
     6 {
     7     //要修改控件的属性 只能在定义控件的xaml或者xaml对应的cs文件修改。  首先订阅Monitor的PartEvent事件,当触发PartEvent事件时(可能并不在类MainWindow对象中),被注册的函数就行做出相应的响应。
     8     public partial class MainWindow
     9     {
    10        
    11         public MainWindow()
    12         {
    13               Monitor.PartEvent += OnStep;//将该类中的函数注册到Monitor静态类的PartEvent事件中。
    14         }
    15         public  void OnStep(Object sender,MessageArgs message)
    16         {
    17           
    18             Application.Current.Dispatcher.Invoke(new Action(() =>
    19                 {
    20                     MyTextBlock.Text = message.Txtmessage;//设置对应xaml中控件的属性
    21                 }));
    22         }
    23      }
    24 }

    MessageArgs类:

     1 public  class MessageArgs:EventArgs
     2     {
     3        public MessageArgs(string message)
     4        {
     5            this.TxtMessage = message;
     6        }
     7 
     8        public string TxtMessage { get; set; }
     9        
    10     }

    Monitor静态类:

     1  public static class Monitor
     2     {
     3       public static event  EventHandler<MessageArgs> PartEvent;//定义在Monitor中的一个事件,参数是MessageArgs对象
     4 
     5       
     6       public static void InFunction(string message)
     7        {
     8            var messageArg = new MessageArgs
     9                {
    10                    TxtMessage=message
    11                };
    12            if (PartEvent != null)//如果mainwindow构造函数中给PartEvent注册了函数就不为null
    13            {
    14                PartEvent(null, messageArg);//触发事件,执行所有注册过的函数
    15            }
    16        }
    17 
    18     public static bool MonitorCenter(string s)
    19        {
    20          InFunction(s);//在外部类中修改TextBlock的Text
    21        }
    22 }
  • 相关阅读:
    samba 服务搭建
    lock
    dev GridControl FilterCriteria
    dev GridControl Column 背景色
    Microsoft NLayerApp案例理论与实践
    DDD
    .Net架构师-开闭原则
    .Net架构师-面向对象的设计原则
    .Net架构师-详解面向对象
    .Net架构师-面向过程和面向对象
  • 原文地址:https://www.cnblogs.com/foreveryt/p/4044418.html
Copyright © 2011-2022 走看看