Tenhos 2窗体,其中一种是usercontrol,一种是普通窗口。所以我将该用户控件加载到我的窗口中。我想做的是在单击用户控件按钮时更改窗口中的值。
窗口 [用户控制]
当我单击用户控制按钮(例如“更改颜色窗口”)时,我会更改窗口的背景颜色。
这怎么可能?
如果我创建一个全局类并放置一个类型为 windows 的对象,我将能够访问它吗?
这很简单。有多种方法可以实现这一目标。我将列出简单的:
在 中创建一个事件UserControl
,提出并收听它
在您的 中UserControl
,创建一个public
事件:
> 用户控件.Cs
public Event EventHandler MyEvent;
///raise the event
private void btn_Click(object sender, RoutedEventArgs e)
{
MyEvent(this , e);
}
> Wndows.Cs
Usercontrol1.MyEvent += new System.EventHandler(this.MyMethod);
pirvate void MyMethod
{
////do stuff here
}
使用GetWindow
方法
您可以简单地使用GetWindow
方法:
private void btn_Click()
{
Window parent = Window.GetWindow(this);
///code here
}
使用 VisualTreeHelper
这是一个可用于查找控件父级的函数。这是非常有用的,因为它不仅让你的窗口,但孩子的任何父如StackPanel
,Grid
等。
public static T FindParent<T>(DependencyObject child)where T : DependencyObject
{
DependencyObject parentObject = VisualTreeHelper.GetParent(child);
if (parentObject == null)
return null;
T parent = parentObject as T;
if (parent != null)
return parent;
else
return FindParent<T>(parentObject);
}
////Call it like this :
var parent = FindParent<Window>(this);
希望这可以帮助 :)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句