Im новый здесь и относительный новичок с программированием на C#. У меня проблема с моей маленькой программой, которую я пытаюсь собрать. он должен иметь три окна (это на немецком, но это легко понять). В первом он должен иметь 4 машины с ценой, мощностью и моделью в datagrid i DGrid. Когда вы нажимаете на кнопку ниже, появляется второе окно, и вы можете выбрать, какой тип страхования вы хотите, и если вы будете платить за него каждый год, или каждые полгода, и т.д. ... и когда вы нажимаете появляется кнопка под третьим окном, и сумма, которую вы должны заплатить, зависит от модели вашего автомобиля (которую вы выбрали в первом окне) и страховки, которую вы выбрали во втором окне. В любом случае, я сделал первые 2 окна, и он работает исправно, но проблема в том, что я не знаю, как подключить автомобиль, который я выбрал в первом окне (классе), с третьим окном (где он делает вычисления) , Если я пишу Autos x = (Autos) DGrid.SelectedItem; в третьем окне он говорит, что не распознает имя DGrid (которое инициализируется в первом).Как подключить элемент datagrid к другому классу
Итак, вопрос: как получить третье окно, чтобы использовать выбранный элемент из первого, чтобы сделать вычисления?
Вот код - первое окно;
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();
}
}
}
А класс автомобиля:
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;
}
}
}
Я правильно понимаю: вы используете WPF, но вы хотите делать все без кода XAML без кода? (Ваш данный пример кода не содержит XAML, что нечетно для связанных с WPF вещей.) – elgonzo
Ну, я сделал макеты окон с WPF в XAML, и им интересно делать все остальное в коде, хотя я бы хотел знаете, как это сделать в XAML. Я просто не писал материал XAML, потому что это просто макеты. – user3613744
Хорошо, я вижу ... Два популярных варианта: (A) [выполнить привязку данных в кодировке] (http://msdn.microsoft.com/en-us/library/ms742863%28v=vs.110 % 29.aspx) или (B) - предпочтительный выбор, хотя и больше усилий - создать модель (ы) просмотра (VM) для ваших трех окон, которые также отражают (функциональные) отношения между этими тремя окнами (например, имеющие свойство для выбранного автомобиля) и назначить эти виртуальные машины DataContext соответствующих окон. Databind в XAML только для виртуальных машин в DataContext. Любая логика поведения реализована в виртуальных машинах, а не в самих элементах управления/окнах. – elgonzo