![](/img/trans.png)
[英]C# / WPF - DesignData - Binding to DesignData Collection Properties
[英]WPF Command Line and MvvmLight with designdata
我想重寫OnStartup,如本線程中所述
現在是我正在使用MVVM Light Toolkit的問題,該工具拋出XamlParseException,此時,“ Locator”是未知的:
DataContext="{Binding Main, Source={StaticResource Locator}}
我沒有時間設計時間
應用程式
<Application.Resources>
<!--Global View Model Locator-->
<vm:ViewModelLocator x:Key="Locator"
d:IsDataSource="True" />
</Application.Resources>
我的優先
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
if (e.Args.Length > 0 && e.Args[0] == "\\start")
{
/* do stuff without a GUI */
MessageBox.Show("Start");
}
else
{
MainWindow mainWindow = new MainWindow(); // <-- Exception
ViewModelLocator locator = new ViewModelLocator();
mainWindow.DataContext = locator.Main;
mainWindow.ShowDialog();
}
this.Shutdown();
}
如何將命令行與MVVM Light Toolkit結合使用?
有了此覆蓋,就不再有例外。 但是,如果xaml中已經聲明了ViewModelLocator,為什么還要將它添加到資源中呢?
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
if (e.Args.Length > 0 && e.Args[0] == "\\start")
{
/* do stuff without a GUI */
MessageBox.Show("Start");
}
else
{
ViewModelLocator locator = new ViewModelLocator();
Resources.Add("Locator", locator);
MainWindow mainWindow = new MainWindow();
//DataContext="{Binding Main, Source={StaticResource Locator}}"
//mainWindow.DataContext = locator.Main;
mainWindow.ShowDialog();
}
this.Shutdown();
}
您必須檢查資源是否已經包含定位器
ViewModelLocator locator;
if (!Resources.Contains("Locator"))
{
locator = new ViewModelLocator();
Resources.Add("Locator", locator);
}
else
{
locator = (ViewModelLocator) Resources["Locator"];
}
WorkingWindow mainWindow = new WorkingWindow();
mainWindow.ShowDialog();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.