C#(WPF)在不新建实例的情况下怎么调用另一个类的方法

BackStage是主窗体MainWindow的一个控件,但是不继承MainWindow,继承的是其他的。怎么在BackStage.xaml.cs里调用MainWindo... BackStage是主窗体MainWindow的一个控件,但是不继承MainWindow,继承的是其他的。
怎么在BackStage.xaml.cs里调用MainWindow.xaml.cs里的方法。不能用创建新实例的方法。
Java可以用Context实现。C#怎么实现??
展开
 我来答
阳光的雷咩咩
2014-01-28 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7772万
展开全部
    <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,也就是其实例。
你可以看看单例模式是怎么做到静态实例的。网上搜一下。
GeminiYellow
2014-01-28 · TA获得超过101个赞
知道答主
回答量:87
采纳率:0%
帮助的人:67.4万
展开全部
两点建议:
1,楼主补习一下语文吧……
2,Context的本意是什么?上下文。
控件的Parent是什么,是存放它的容器。你现在把窗口作为容器,那么Parent难道不是你要的东西?何来重新创建一说。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Mickal小米
2014-01-28 · TA获得超过3666个赞
知道大有可为答主
回答量:1542
采纳率:100%
帮助的人:1772万
展开全部
如果方法是静态的话 就不需要创建实例了。
追问
NO,NO。也不是静态的。
追答
那就不行了啊。为什么不能实例化呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式