繁体   English   中英

在C#WPF中启动应用程序时运行代码的正确方法是什么?

[英]What is the proper way to run code on application start in C# WPF?

我需要用目录名称填充列表框,以便在应用程序启动时将方法放在哪里运行(MainWindow,Window_Loaded或其他)?

要使用ViewModel,请在XAML中创建ListBox,并将ItemsSource绑定到项目集合,然后定义每个项目的外观模板-从这里开始是一个好地方: http : //msdn.microsoft.com/zh-cn /library/ms752347.aspx#binding_to_collections 使用此方法后,您将意识到维护代码的好处(即使视图发生更改并且必须更新UI也很简单),以及将设计与代码分离的好处。

实际发生的是您的XAML由MainWindow的构造函数中的InitializeComponent()方法调用编译并运行。

如果确实要在后面使用代码而不是XAML,则可以将处理程序分配给Window.Loaded事件-请注意,尽管该事件可能发生多次,所以请在其中使用一个标志来查看它是否尚未运行。

尽管使用MVVM有很多好处-我不像XAML中那样做它-我会在XAML中定义我的ListBox,模板等,但是您需要条件绑定,或者我发现在代码中更容易做到这一点,例如:

    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;
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM