我正在App.xaml.cs
构造函数中创建我的主窗口,如下所示:
MainWindow wnd = new MainWindow();
Application.Current.MainWindow = wnd;
wnd.Show();
启动应用程序会给我一个XamlParseException
,该资源的名称为" Locator"无法找到。
这是可疑的一句话:
<DockPanel x:Name="MainPanel" DataContext="{Binding MainWindowViewModel, Source={StaticResource Locator}}" LastChildFill="True">
在App.xaml中使用StartupUri
可以正常工作。
我做错了什么?!
答案 0 :(得分:1)
我认为您在App.xaml中拥有checkboxes.change(function(e) {
//Get the checkbox state
var isChecked;
$(this).attr("checked") ? isChecked = true : isChecked = false;
//Get the 2 checkbox with in the list and the grid
var selectedData = $('input[name="' + $(this).attr("name") + '"]');
//Set the 2 checkbox in the same state
selectedData = selectedData.prop('checked', isChecked);
//Get the 2 selectedData checkbox parent
var selectedDataParent = selectedData.closest('.vac_holder');
//Add or remove class for style
if (isChecked == true) {
selectedDataParent.addClass("pincard-checked");
} else {
selectedDataParent.removeClass("pincard-checked");
}
//Use juste one of the 2 set of check boc for serialisation
var checkboxesForSerialization = $('.grid input[type="checkbox"]');
var ser = '?' + checkboxesForSerialisation.serialize() ;
console.log(ser);
});
资源。将代码放在构造函数中时它不起作用的原因是App.xaml尚未加载。如果您看到visual studio生成的默认Locator
方法,则可以看到在构造函数之后调用Main
。此时初始化App.InitializeComponent
文件中的资源。
您可以通过将代码放在Application.Startup事件中来解决问题,该事件在调用Application对象的Run方法时发生。 (如果设置了xaml
,则在调用StartupUri
后也会初始化它。)
Run
当然,您可以订阅该事件并在事件处理程序中编写代码。但是,当我们想要订阅基类中的事件时,最好覆盖相应事件的protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
var window = new MainWindow();
window.Show();
}
方法。
On和btw,您不需要此行OnXXX
。它将由wpf自动完成。