Привет, я хотел бы узнать у вас, как передать значения. У меня есть два набора массивов: массив томов и массив кривизны. Каждый массив считывается из текстового файла, нажав кнопку в MainWindow Class, как показано ниже.Передача значения другому классу
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Input ip = new Input();
double[] curvature = new double[40];
double[] moment = new double[40];
string path;
path = "C:\\Desktop\\48co.out";
string[] records = File.ReadAllLines(path);
int linenumber = 0;
string[][] rows = new string[40][];
for (int i = 0; i < records.Length; i++)
{
if (records[i] == "step epscmax in. Tens. Comp. Comp. Tens. force force rad/in (K-ft)")
{
linenumber = i + 1;
}
}
for (int i = linenumber; i < linenumber + 40; i++)
{
rows[i - linenumber] = records[i].Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);
}
for (int i = 0; i < 40; i++)
{
curvature[i] = Double.Parse(rows[i][9]);
moment[i] = Double.Parse(rows[i][10]);
}
ip.curvature = curvature;
ip.moment = moment;
PlotMPhi plotmphi = new PlotMPhi();
plotmphi.Show();
}
}
И эти два массива передаются в другой класс под названием «Вход».
class Input
{
public Input()
{
double[] curvature = new double[40];
double[] moment = new double[40];
}
public double[] curvature { get; set; }
public double[] moment { get; set; }
}
Моя идея состояла в том, чтобы сохранить все входные параметры в классе Input, и если какие-либо методы в других классах нуждаются в них, они могут быть переданы. В этом случае я хотел построить график с x точками из массива кривизны и y точек из массива моментов, используя OXYplot в WPF под названием PlotMPhi.
public partial class PlotMPhi : Window
{
public PlotMPhi()
{
var vm = new MVMMPhi();
this.DataContext = vm;
InitializeComponent();
}
}
class MVMMPhi
{
public Collection<MeaMPhi> MeaMPhis { get; private set; }
public MVMMPhi()
{
MeaMPhis = new Collection<MeaMPhi>();
Input ip = new Input();
for (int i = 0; i < 40; i++)
{
MeaMPhis.Add(new MeaMPhi { Curvature = ip.curvature[i],Moment = ip.moment[i]});
}
}
}
public class MeaMPhi
{
public double Curvature { get; set; }
public double Moment { get; set; }
}
Это xaml-файл для построения графика.
<Window x:Class="XsectionWIN.PlotMPhi"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:oxy="clr-namespace:OxyPlot.Wpf;assembly=OxyPlot.Wpf"
Title="Moment-Curvature" Height="480" Width="640">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Menu DockPanel.Dock="Top">
<MenuItem Header="_File">
<MenuItem Header="Save plot..." Click="SavePlot_Click"/>
<Separator />
<MenuItem Header="_Exit" Click="exit_Click" />
</MenuItem>
</Menu>
<oxy:Plot Grid.Row="1" x:Name="plot" Title="Moment-Curvature" Subtitle="{Binding Subtitle}" >
<oxy:Plot.Axes>
<oxy:LinearAxis Position="Bottom" Title="Curvature (rad/in)" TitleFont="Arial" TitleFontSize="12" TitleColor="Black"/>
<oxy:LinearAxis Position="Left" Title="Momennt (kips-in)" TitleFont="Arial" TitleFontSize="12" TitleColor="Black"/>
</oxy:Plot.Axes>
<oxy:Plot.Series>
<oxy:LineSeries Title="M-curvature" DataFieldX="Period_t" DataFieldY="Acc_t" Color="Red" StrokeThickness="3" ItemsSource="{Binding MeaMPhis}"/>
</oxy:Plot.Series>
</oxy:Plot>
</Grid>
</Window>
Проблема в том, что эти два массива не передаются классу MVMMPhi. Я проверил процедуру шаг за шагом, нажав клавишу F11. Кажется, эти массивы передаются ввод класса до достижения
PlotMPhi plotmphi = new PlotMPhi();
plotmphi.Show();
После того, как попасть в этот шаг, моменты и кривизна массивы в Inout становятся NULL. Я столкнулся с этим раньше, так что я сделал, чтобы поставить эти массивы в методе непосредственно т.е.
PlotMPhi plotmphi = new PlotMPhi(moment,curvature);
Это работает для меня до сих пор. Но мне нужно обработать множество массивов позже, поэтому я ищу простой способ справиться и хотел бы знать, почему моя идея не работает. Я новичок в мире программирования. Я не хочу получать ложку, поэтому любые предложения или советы будут оценены. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Спасибо за ваше время и помощь,
Я устал от этого и до сих пор не указан. Есть идеи? Спасибо, – user3170073
Какая часть нулевой? Вы должны убедиться, что используемый вход - это тот же самый объект (не такой же тип), который был инициализирован данными. Я также изменил бы ту часть, где вы строите PlotMPhi. –
Я понял. Спасибо, – user3170073