Как инициализировать конструктор один раз только при запуске приложения относительно того, что еще происходит в проекте?C # MVVM - PullRequest
0 голосов
/ 19 ноября 2018

Я начинаю свой опыт с C #. Попробовал немного подумать, но не получилось. Я попытался скопировать существующий список в какой-то другой, но не смог просмотреть его в представлении, так как он ToList () копирует новый созданный объект new listOfTrans. Мой вопрос касается кода, приведенного ниже:

ModelApplication.cs имеет собственный конструктор:

    public ModelApplication()
    {

        ilość_Transformatorów = 2;
        ilość_Uzwojeń = 2;
        ilość_Linii_Wyjściowych_SZ1_S1 = 1;
        ilość_Linii_Wyjściowych_SZ1_S2 = 1;
        listOfTrans = new List<Transformator>() { };
        szynaWe = new SzynaWe();
        listOfSzynaWy = new List<SzynaWy>();
        napięcie_Znamionowe_UGN = 0;
        Init();
    }

Тогда у меня есть public static void RefreshID(), который устанавливает все поля, например: Transformator.id = 0;, и метод public void Refresh():

        RefreshID();
        ilość_Generacji = 2;
        ilość_Linii_Wejściowych = 2;
        listOfTrans.Clear();

        szynaWe.listOfGen.Clear();
        szynaWe.listOfLines.Clear();
        if (ilość_Transformatorów == 1)
        {

            listOfTrans.Add(new Transformator() { listOfSection = new List<Sekcja>() { new Sekcja() } });

        }
        else if (ilość_Transformatorów == 2)
        {

            listOfTrans.Add(new Transformator() { listOfSection = new List<Sekcja>() { new Sekcja() } });

            listOfTrans.Add(new Transformator() { listOfSection = new List<Sekcja>() { new Sekcja() } });

        }
        ...

К вопросу ... всякий раз, когда я снова изменяю ilość_Transformatorów = 2; на 1 или 2, я получаю новые объекты со значениями по умолчанию, а не со значениями, которые я определяю в представлении после запуска программы. Я хочу, чтобы эти значения были "сохранены" и вызваны снова, когда, конечно, поле ilość_Transformatorów изменится и отобразит эти вновь введенные значения в окне.

MainWindows.xaml код:

                             <Grid Grid.Column="0" Grid.Row="11" Grid.ColumnSpan="2">
                                <DataGrid Style="{StaticResource AzureDataGrid}" Margin="0,20,0,0"
                                    Name="TransformersDataGrid" AutoGenerateColumns="False" CanUserSortColumns="False" 
                                          CanUserAddRows="False"  SnapsToDevicePixels="True" Controls:ControlsHelper.ContentCharacterCasing="Normal">
                                    <DataGrid.Columns>
                                        <DataGridTextColumn MaxWidth="150" Header="TRANSFORMATOR" Binding="{Binding Path=nazwa}">
                                        </DataGridTextColumn>
                                        <DataGridTextColumn Header="UDN [KV]" Binding="{Binding Path=napięcie_UD, Converter={StaticResource kiloConverter}}"/>
                                        <DataGridTextColumn Header="UGN [KV]" Binding="{Binding Path=napięcie_UG, Converter={StaticResource kiloConverter}}"/>
                                        <DataGridTextColumn Header="Sn [MVA]" Binding="{Binding Path=moc_Znamionowa, Converter={StaticResource megaConverter}}"/>
                                        <DataGridTextColumn Header="dPcu [kW]" Binding="{Binding Path=dPcu, Converter={StaticResource kiloConverter}}"/>
                                        <DataGridTextColumn Header="dUz [%]" Binding="{Binding Path=dUz}"/>
                                        <DataGridTextColumn Header="cos Fi [-]" Binding="{Binding Path=cosFi}"/>
                                        <DataGridTextColumn Header="KT[-]" Binding="{Binding Path=KT}"/>
                                    </DataGrid.Columns>
                                </DataGrid>
                            </Grid>

Transformator.cs код:

    public Transformator()
    {
        id++;
        ID = id;
        this.liczbaUzwojeń = 2;
        nazwa = "Transformator " + id.ToString();
        Init();
    }

    public void Init()
    {
        napięcie_UD = 16500;
        napięcie_UG = 110000;
        moc_Znamionowa = 25000000;
        dPcu = 12000;
        dUz = 11;
        cosFi = 0.8;
        KT = 0.973;
    }

Вся помощь и предложения приветствуются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...