很简单的问题,但我没有进展所以我想我应该问...
我正在编写一个小型的WPF原型,我在其中放置了我认为它属于的启动逻辑:In(重写的)App.OnStartup方法.
问题是方法永远不会被调用,我不明白为什么!
我浏览了一些,发现有人说<Application>
App.xaml中的标记必须App
在" x:Class
"属性中指定实现类().我改变了它x:Class="Application"
,x:Class="App"
但它没有任何区别.
我在这里错过了什么?
编辑:这是代码......
XAML:
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="App"
ShutdownMode="OnMainWindowClose"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Recources\Brushes\Brushes.xaml"/>
<ResourceDictionary Source="Recources\Templates\Templates.xaml"/>
<ResourceDictionary Source="Recources\Styles\GVSStyles.xaml"/>
<ResourceDictionary Source="Recources\Styles\TimePicker.xaml"/>
<ResourceDictionary Source="Recources\Icons\GVSIcons.xaml"/>
<ResourceDictionary Source="Recources\Icons\BottleIcon.xaml"/>
<ResourceDictionary Source="Recources\Styles\BusyAnimationStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
Run Code Online (Sandbox Code Playgroud)
代码背后......
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
// lower default framerate from 60 to 20 to save CPU ...
Timeline.DesiredFrameRateProperty.OverrideMetadata(
typeof(Timeline),
new FrameworkPropertyMetadata { DefaultValue = 20 });
hookUpViews();
connectToServer();
}
Run Code Online (Sandbox Code Playgroud)
H.B*_*.B. 20
编辑:您的XAML似乎与后面的代码无关,x:Class
需要包含App类的命名空间.例如MyWpfApplication.App
.
除非您发布一些代码,否则您只是疯狂猜测,这是我的:您没有正确覆盖该方法,但使用相同名称和签名的方法隐藏它.
这是一个工作覆盖应该是这样的:
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
MessageBox.Show("!");
}
Run Code Online (Sandbox Code Playgroud)
正如所建议的那样,您可以使用该Startup
事件,但不必如此StartupUri
,除了覆盖中的代码之外,还将执行该事件.
归档时间: |
|
查看次数: |
6628 次 |
最近记录: |