[英]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.