Как правильно запустить код при запуске приложения в C # WPF? - PullRequest
0 голосов
/ 01 ноября 2010

Мне нужно заполнить список именами каталогов, чтобы я мог поместить свой метод для запуска при запуске приложения (MainWindow, Window_Loaded или что-то в этом роде)?

1 Ответ

1 голос
/ 01 ноября 2010

Чтобы использовать вашу ViewModel, создайте свой ListBox в XAML и свяжите ItemsSource с коллекцией элементов, а затем определите шаблон того, как должен выглядеть каждый элемент - вот хорошее место для начала: http://msdn.microsoft.com/en-us/library/ms752347.aspx#binding_to_collections. Как только вы используете этоТаким образом, вы получите преимущества при поддержке вашего кода (даже если ваше представление меняется, и вам просто необходимо обновить свой пользовательский интерфейс), а также преимущество отделения дизайна от вашего кода.

Что на самом деле происходит, так это ваш XAMLвыполняется и запускается с помощью вызова метода InitializeComponent () в конструкторе вашего MainWindow.

Если вы хотите использовать код позади вместо XAML, вы можете назначить обработчик событию Window.Loaded - будьте осторожны, если этоможет встречаться несколько раз, поэтому используйте флаг, чтобы увидеть, что он еще не запущен.

Хотя есть преимущества использования MVVM - я не принимаю его, как все в XAML - я бы определил свой ListBox, шаблон и т. д.в XAML, но если вы хотите условное связывание или что-то другое, мне легчеде такие как:

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        if (!this.hasLoaded)
        {
            this.hasLoaded = true;
            DirectoryInfo di = new DirectoryInfo("."); // "." is the current dir we are in
            FileInfo[] files = di.GetFiles();
            List<string> fileNames = new List<string>(files.Length);
            foreach(FileInfo fi in files)
                fileNames.Add(fi.Name);
            this.listBox1.ItemsSource = fileNames;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...