我有一个非常简单的演示应用程序,用于测试目的。我刚刚添加了一个资源字典,现在WPF完全无法在运行时找到任何资源。 Visual Studio认为这些资源很好,并在可视化设计器中显示它的所有样式,但是当运行应用程序时,我得到XamlParseException
说没有找到资源。这段代码除了我的其他工作应用程序什么都没有,我找不到任何区别。有什么问题?
以下是资源字典AppResources.xaml的一个示例:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<!-- There need to be at least two styles if StartupUri is not used. -->
<!-- See http://bengribaudo.com/blog/2010/08/19/106/bug-single-application-resources-entry-ignored -->
<Style x:Key="__unused"/>
<Style x:Key="InfoLabelStyle" TargetType="TextBlock">
<Setter Property="Foreground" Value="Green"/>
</Style>
</ResourceDictionary>
从App.xaml引用:
<Application
x:Class="DemoApp.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Resources/AppResources.xaml"/>
<ResourceDictionary Source="/Resources/AppResources2.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
这是由于未找到“InfoLabelStyle”而无法运行的MainWindow.xaml,而文本在设计器中已显示为绿色:
<Window
x:Class="DemoApp.View.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="DemoApp"
Height="150" Width="525">
<Grid>
<TextBlock
Margin="12"
Style="{StaticResource InfoLabelStyle}"
Text="Info"/>
</Grid>
</Window>
您可以在此处找到完整的项目源代码:http://unclassified.de/tmp/DemoApp.zip
答案 0 :(得分:1)
在Application
入口点添加对InitializeComponent
Main
方法的调用:
[STAThread]
public static void Main()
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
var app = new App();
app.InitializeComponent();
app.Run();
}
What does InitializeComponent() do, and how does it work in WPF?