Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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/12.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#(WPF)方法_C#_Wpf_Oop_Methods - Fatal编程技术网

从不同类调用C#(WPF)方法

从不同类调用C#(WPF)方法,c#,wpf,oop,methods,C#,Wpf,Oop,Methods,我对编码很陌生。当涉及到输入变量时,我在将方法从B调用到类a时遇到了一个问题。请解释为什么a.PrintAfromB();给我零值。如何克服这种情况。? 我看到一些例子使用MVVM。但在现阶段,这些对我来说非常复杂。似乎我得到的输入变量不正确或调用的方法不正确。我被吸了,不解决这个问题就无法前进 主要 A B XAML 问题在于,一个类的另一个实例B与主类中的实例不同 要打印输入的内容,应将B实例放入A中 所以做一个如下的例子: class A { B b1; public A(B

我对编码很陌生。当涉及到输入变量时,我在将方法从B调用到类a时遇到了一个问题。请解释为什么a.PrintAfromB();给我零值。如何克服这种情况。? 我看到一些例子使用MVVM。但在现阶段,这些对我来说非常复杂。似乎我得到的输入变量不正确或调用的方法不正确。我被吸了,不解决这个问题就无法前进

主要

A

B

XAML



问题在于,一个类的另一个实例B与主类中的实例不同

要打印输入的内容,应将B实例放入A中

所以做一个如下的例子:

class A
{
  B b1;
  public A(B b){
    b1 = b;
  }

  double Apple { get; set; }    

  public void PrintAfromB() {
    Console.WriteLine("Calling method from B where input involved: "+ b1.CallB());
  }

  public void PrintAfromBB() {
    Console.WriteLine("Calling method from B where input not involved: " + b1.CallBB());
  }
}
public partial class MainWindow : Window {
  public MainWindow(){
    InitializeComponent();
    this.DataContext = this;
  }

  B b = new B();
  A a = new A(b);

  private void Button_Click(object sender, RoutedEventArgs e) {
      b.Bat = double.Parse(one.Text);
      b.PrintB();
      a.PrintAfromB();
      a.PrintAfromBB();
  }
}
然后更改Main,如下所示:

class A
{
  B b1;
  public A(B b){
    b1 = b;
  }

  double Apple { get; set; }    

  public void PrintAfromB() {
    Console.WriteLine("Calling method from B where input involved: "+ b1.CallB());
  }

  public void PrintAfromBB() {
    Console.WriteLine("Calling method from B where input not involved: " + b1.CallBB());
  }
}
public partial class MainWindow : Window {
  public MainWindow(){
    InitializeComponent();
    this.DataContext = this;
  }

  B b = new B();
  A a = new A(b);

  private void Button_Click(object sender, RoutedEventArgs e) {
      b.Bat = double.Parse(one.Text);
      b.PrintB();
      a.PrintAfromB();
      a.PrintAfromBB();
  }
}

希望能有所帮助。

您的屏幕名称泄露了我第一次查看代码时所说的内容
YIKES
,我建议您在创建变量时使用更有意义的名称,我会阅读/google免费的在线
C#Basics教程
,了解/关注
类部分
,我还将学习如何使用调试器,设置断点并开始单步执行此代码。从经典的winforms开始,WPF对于初学者来说有点高级。非常感谢您的建议,下面将介绍。:)谢谢你的回复,我试着按照你的建议修改代码。但是在主类中,当我输入一个参数“b”时。这给了我错误。字段初始值设定项无法引用非静态字段方法或属性创建对象。我尝试将创建对象移动到按钮内部,但错误消失。我不知道这样做是否合适。顺便说一句,它不工作。谢谢
class A
{
  B b1;
  public A(B b){
    b1 = b;
  }

  double Apple { get; set; }    

  public void PrintAfromB() {
    Console.WriteLine("Calling method from B where input involved: "+ b1.CallB());
  }

  public void PrintAfromBB() {
    Console.WriteLine("Calling method from B where input not involved: " + b1.CallBB());
  }
}
public partial class MainWindow : Window {
  public MainWindow(){
    InitializeComponent();
    this.DataContext = this;
  }

  B b = new B();
  A a = new A(b);

  private void Button_Click(object sender, RoutedEventArgs e) {
      b.Bat = double.Parse(one.Text);
      b.PrintB();
      a.PrintAfromB();
      a.PrintAfromBB();
  }
}