C#(WPF)在不新建实例的情况下怎么调用另一个类的方法
BackStage是主窗体MainWindow的一个控件,但是不继承MainWindow,继承的是其他的。怎么在BackStage.xaml.cs里调用MainWindo...
BackStage是主窗体MainWindow的一个控件,但是不继承MainWindow,继承的是其他的。
怎么在BackStage.xaml.cs里调用MainWindow.xaml.cs里的方法。不能用创建新实例的方法。
Java可以用Context实现。C#怎么实现?? 展开
怎么在BackStage.xaml.cs里调用MainWindow.xaml.cs里的方法。不能用创建新实例的方法。
Java可以用Context实现。C#怎么实现?? 展开
3个回答
展开全部
<Grid>
<Button Click="Button_Click"></Button>
</Grid>
//可以通过控件找到窗体实例,
//示例:我用button找到了MainWindow
private void Button_Click(object sender, RoutedEventArgs e)
{
Button b = sender as Button;//相当于BackStage
Window w = FindAnchestor<Window>(b);
MessageBox.Show(w.Title);
}
// 这段直接复制
private static T FindAnchestor<T>(DependencyObject current)
where T : DependencyObject
{
do
{
if (current is T)
return (T)current;
current = VisualTreeHelper.GetParent(current);
}
while (current != null);
return null;
}
更多追问追答
追问
/*在其它类中代码如下*/
private final Game game; //主类(相当于MainWindow),this传过去
public PuzzleView(Context context)
{
this.game = (Game) context;
}
请问c#有没有上面的用法?
追答
最简单的,声明一个全局静态变量x,在MainWindow(被引用者)的构造函数里面,x=this;赋值,然后其他你要用的时候就引用这个x,也就是其实例。
你可以看看单例模式是怎么做到静态实例的。网上搜一下。
展开全部
两点建议:
1,楼主补习一下语文吧……
2,Context的本意是什么?上下文。
控件的Parent是什么,是存放它的容器。你现在把窗口作为容器,那么Parent难道不是你要的东西?何来重新创建一说。
1,楼主补习一下语文吧……
2,Context的本意是什么?上下文。
控件的Parent是什么,是存放它的容器。你现在把窗口作为容器,那么Parent难道不是你要的东西?何来重新创建一说。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果方法是静态的话 就不需要创建实例了。
追问
NO,NO。也不是静态的。
追答
那就不行了啊。为什么不能实例化呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询