Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将当前对象上的方法调用到另一个类?_C#_Wpf_Xaml - Fatal编程技术网

C# 如何将当前对象上的方法调用到另一个类?

C# 如何将当前对象上的方法调用到另一个类?,c#,wpf,xaml,C#,Wpf,Xaml,我如何调用zamkinecie()文件Window1.cs?不是我在方法Window_Closed()中显示的新对象,而是您当前使用的文件MainWindow.cs的对象? 已经在MainWindow.xaml文件中创建了方法zamkinecie()的组件 File: Window1.cs namespace AllSportsBets102 { public partial class Window1 : Window {

我如何调用zamkinecie()文件Window1.cs?不是我在方法Window_Closed()中显示的新对象,而是您当前使用的文件MainWindow.cs的对象? 已经在MainWindow.xaml文件中创建了方法zamkinecie()的组件

    File: Window1.cs 
    namespace AllSportsBets102
    {    
        public partial class Window1 : Window
        {
            public Window1(DataGrid zdg, List<Data2> dsx)
            {
                InitializeComponent();
            }
            private void Window_Closed(object sender, EventArgs e)
            {
                MainWindow mw = new MainWindow();
                mw.Zamkniecie();
            }
        }
    }

    File: MainWindow.cs
    namespace AllSportsBets102
    {
        public partial class MainWindow : Window
        {
              public MainWindow()
              {
                  InitializeComponent();
              }
              public void Zamkniecie()
              {
                    InfoStackPanel.IsEnabled = true;
                    KuponStackPanel1.IsEnabled = true;
                    KuponStackPanel2.IsEnabled = true;
                    FiltrStackPanel.IsEnabled = true;
                    WszystkieZdarzeniaStackPanel1.IsEnabled = true;
                    WszystkieZdarzeniaStackPanel2.IsEnabled = true;
                    KuponLabel.IsEnabled = true;
                    WszystkieLabel.IsEnabled = true;
                    InfoLabel.IsEnabled = true;
                    StackPanel1Copy.IsEnabled = true;
                    StackPanel2Copy.IsEnabled = true;  
               }
        }
    }
文件:Window1.cs
命名空间AllSportsBets102
{    
公共部分类Window1:Window
{
公共窗口1(数据网格zdg,列表dsx)
{
初始化组件();
}
私有无效窗口\u已关闭(对象发送方,事件参数e)
{
主窗口mw=新的主窗口();
mw.Zamkinecie();
}
}
}
文件:MainWindow.cs
命名空间AllSportsBets102
{
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
}
公共无效Zamkinecie()
{
InfoStackPanel.IsEnabled=true;
kuponstackpanel 1.IsEnabled=true;
KuponStackPanel2.IsEnabled=true;
filterstackpanel.IsEnabled=true;
WszystkieZdarzeniaStackPanel1.IsEnabled=true;
WszystkieZdarzeniaStackPanel2.IsEnabled=true;
KuponLabel.IsEnabled=true;
wszystkielab.IsEnabled=true;
InfoLabel.IsEnabled=true;
StackPanel1Copy.IsEnabled=true;
StackPanel2Copy.IsEnabled=true;
}
}
}

以下是一些选项:

  • 为Window1提供对MainWindow的引用,以便它可以调用Zamkniecie方法
  • 将Zamkinecie方法设置为静态
  • 将Zamkinecie方法移到Window1中
  • 如果只有一个MainWindow实例,请将MainWindow作为一个单例实现,这样您就可以从任何地方访问它
  • 如果MainWindow实例化Window1,则从Window1引发在MainWindow上处理的事件
  • 如果MainWindow没有实例化Window1,则实现观察者模式
  • 如果可能的话,我更喜欢选项5,因为它允许每个类更紧密地管理自己。如果您只想在Window1关闭时调用Zamkinecie,您应该能够从MainWindow中识别它。以下是一段将在主窗口中显示的代码片段:

    Window1 window1 = new Window1();
    window1.ShowDialog();
    Zamkniecie();
    

    注意:这些类在哪个文件中没有区别,只要它们在同一名称空间中。

    我知道这可能是多余的,但最快的方法是添加

     using MainWindow.cs;
    

    在Window1.cs文件的顶部

    我无法使用MainWindow.cs添加;或者使用MainWindow.xaml.cs;在Window1.cs文件的顶部,因为我有一个错误:找不到类型或命名空间名称“MainWindow”(是否缺少using指令或程序集引用?)使用的是命名空间,而不是类名。我可以访问MainWindow类,但我不想创建新对象,因为我有不同的价值成分。在不创建新类MainWindow的情况下调用方法的想法。1。我必须拥有唯一一个没有xaml文件的类,因为组件是不可见的。2.静态方法需要静态字段3。Move方法在所有字段中都会导致错误,例如:当前字段中不存在名称“WszystkieZdarzeniaStackPanel2”context@user231605我不知道你在1中的意思。对于2,如果应用程序中确实只有一个主窗口实例,则可以首先将主窗口实现为单例。我将更新answer以反映这一点。确定,但当它调用静态对象上的方法时,该方法正在创建对象时初始化的字段中工作。我添加了一些其他选项。看一看5。我选择了选项5,但我不知道怎么做。你能给我写一个示例代码或更多解释吗?