我是新手,也是C#编程的相对初学者。我的小程序试图拼凑我的问题。它应该有三个窗口(它是德语但很容易理解)。在第一个它应该有4辆汽车,价格,功率和模型在数据网格我命名为DGrid。当你点击下面的按钮弹出第二个窗口时,你可以选择你想要什么类型的保险,如果你打算每年,或每半年,等等...,当你点击弹出第三个窗口下方的按钮,根据您的车型(您在第一个窗口中选择的)和您在第二个窗口中选择的保险,您需要支付的金额。无论如何,我做了前2个窗口,它正常工作,但我遇到的问题是,我不知道如何连接我在第一个窗口(类)中选择的汽车与第三个窗口(它进行计算) 。 如果我写Autos x =(Autos)DGrid.SelectedItem;在第三个窗口中,它表示它不识别DGrid名称(在第一个窗口中初始化)。
所以问题是:如何让第三个窗口使用第一个窗口中的选定项目进行计算?
这是代码 - 第一个窗口;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Versicherungsrechner
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
Autos a1 = new Autos("Ferrari", 220, 50000);
Autos a2 = new Autos("Lamborghini", 320, 150000);
Autos a3 = new Autos("Maseratti", 520, 250000);
Autos a4 = new Autos("BMW", 250, 55000);
InitializeComponent();
Autos[] auto = new Autos[] { a1, a2, a3, a4 };
DGrid.ItemsSource = auto;
}
public void OnClick(object sender, RoutedEventArgs e)
{
Details d = new Details();
d.Owner = this;
d.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
d.ShowDialog();
}
}
}
第二窗口:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace Versicherungsrechner
{
/// <summary>
/// Interaction logic for Details.xaml
/// </summary>
public partial class Details : Window
{
public Details()
{
InitializeComponent();
}
public void AnzeigenClick(object sender, RoutedEventArgs e)
{
Ausgabe a = new Ausgabe();
a.Owner = this;
a.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
a.ShowDialog();
}
}
}
第三个:
namespace Versicherungsrechner
{
/// <summary>
/// Interaction logic for Ausgabe.xaml
/// </summary>
public partial class Ausgabe : Window
{
public Ausgabe()
{
InitializeComponent();
}
}
}
和Car类:
namespace Versicherungsrechner
{
public class Autos
{
public string modell { get; set; }
public double leistung { get; set; }
public double preis { get; set; }
public Autos(string modell, double leistung, double preis)
{
this.modell = modell;
this.leistung = leistung;
this.preis = preis;
}
}
}
答案 0 :(得分:0)
如果您更改此课程......
public partial class Ausgabe : Window
{
public Ausgabe()
{
InitializeComponent();
}
}
......对此...
public partial class Ausgabe : Window
{
public Autos SelectedAuto {get;set}
public Ausgabe()
{
InitializeComponent();
}
}
然后您可以更改此代码...
public void AnzeigenClick(object sender, RoutedEventArgs e)
{
Ausgabe a = new Ausgabe();
a.Owner = this;
a.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
a.ShowDialog();
}
......对此...
public void AnzeigenClick(object sender, RoutedEventArgs e)
{
Ausgabe a = new Ausgabe();
a.SelectedAuto = DGrid.SelectedValue as Autos;
a.Owner = this;
a.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
a.Setup(); // to do
a.ShowDialog();
}
这将让Aufgabe班级有所帮助。您可以使用其他类重复此过程。
强制性最佳实践注意:在数据绑定和Xaml开始流行之前,这是人们在2006/2007左右用完的方法。在这个时代,这种方法被认为是有风险的,因为它会带来操作风险。但目前它回答了你的问题,让你继续你的项目。