您的位置:首页 > 编程语言 > C#

C#通过事件跨类调用WPF主窗口中的控件

2014-10-22 21:48 330 查看
xaml.cs文件:

using System;
using System.Timers;
using System.Windows;
using System.Windows.Forms;
namespace ControlUsed
{
//要修改控件的属性 只能在定义控件的xaml或者xaml对应的cs文件修改。  首先订阅Monitor的PartEvent事件,当触发PartEvent事件时(可能并不在类MainWindow对象中),被注册的函数就行做出相应的响应。
public partial class MainWindow
{

public MainWindow()
{
Monitor.PartEvent += OnStep;//将该类中的函数注册到Monitor静态类的PartEvent事件中。
}
public  void OnStep(Object sender,MessageArgs message)
{

Application.Current.Dispatcher.Invoke(new Action(() =>
{
MyTextBlock.Text = message.Txtmessage;//设置对应xaml中控件的属性
}));
}
}
}


MessageArgs类:

public  class MessageArgs:EventArgs
{
public MessageArgs(string message)
{
this.TxtMessage = message;
}

public string TxtMessage { get; set; }

}


Monitor静态类:

public static class Monitor
{
public static event  EventHandler<MessageArgs> PartEvent;//定义在Monitor中的一个事件,参数是MessageArgs对象

public static void InFunction(string message)
{
var messageArg = new MessageArgs
{
TxtMessage=message
};
if (PartEvent != null)//如果mainwindow构造函数中给PartEvent注册了函数就不为null
{
PartEvent(null, messageArg);//触发事件,执行所有注册过的函数
}
}

public static bool MonitorCenter(string s)
{
InFunction(s);//在外部类中修改TextBlock的Text
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: