Создание новых классов / управление файлами в приложении WPF - PullRequest
0 голосов
/ 05 февраля 2020

Я новичок в разработке приложений WPF.

Для моего текущего проекта я писал весь свой код в MainWindow.xaml.cs, но он становится очень длинным (в настоящее время 370 строк).

Я предполагаю, что лучший способ отделить код - это создать отдельные классы, создать экземпляры указанного класса в MainWindow.xaml.cs и получить оттуда доступ к их функциям.

Вот пример:

namespace Outrun.Source
{
    public class Saver : MainWindow
    {
        public void SaveTaskList()
        {
            //Put all tasks in a list of strings.
            List<string> tasks = new List<string>();

            for (int i = 0; i < taskListBox.Items.Count; i++)
            {
                tasks.Add(taskListBox.Items[i].ToString());
            }

            //Write all tasks to a .txt file.
            string path = AppDomain.CurrentDomain.BaseDirectory + "OutrunSaveFile.txt";

            for (int i = 0; i < tasks.Count; i++)
            {
                File.WriteAllLines(path, tasks);
            }
        }
    }
}

У меня проблема с доступом к функциям и классам, которые я использую в MainWindow.xaml.cs. В настоящее время у меня есть доступ к элементу ListBox в моей функции SaveTaskList (), потому что я наследую от MainWindow.

Это правильный способ разделения c# кода? Если нет, то как лучше отделить c# код, чтобы мой MainWindow.xaml.cs не получал wwwaaayyyy слишком долго?

1 Ответ

0 голосов
/ 05 февраля 2020

Лучший способ для приложения WPF - использовать шаблон MVVM. Вокруг много учебников, так что вы должны посмотреть на это.

С этим шаблоном ваши ViewModels содержат данные и команды, необходимые для взаимодействия и представления. Представления (в большинстве случаев) являются просто чистым XAML, и вы соединяете их, используя привязку данных. В этом случае вам не нужен доступ к элементам ListBox, просто поместите данные в ObservableCollection и дайте привязке данных выполнить свою работу.

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