我有WPF项目和App.xaml中定义的一些资源,这些资源在其他文件中使用。当我尝试将App.xaml移动到子目录设计器时,无法再找到这些资源。我的项目仍在编译,因为我使用'Startup'事件而不是'StartupUri'。如何告诉设计师在哪里搜索资源?当App.xaml位于项目的根目录时,它如何知道它们在哪里?
更新 项目文件:
的App.xaml:
<Application x:Class="WpfApplication1.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="startup">
<Application.Resources>
<SolidColorBrush Color="LightGray" x:Key="brush" />
</Application.Resources>
</Application>
App.xaml.cs
namespace WpfApplication1
{
public partial class App : System.Windows.Application
{
private void startup(object sender, System.Windows.StartupEventArgs e)
{
new MainWindow().Show();
}
}
}
MainWindow.xaml:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300" Background="{StaticResource brush}" />
MainWindow.xaml.cs
namespace WpfApplication1
{
public partial class MainWindow : System.Windows.Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
更新2: 上传的压缩解决方案http://zalil.ru/30771604(下载将自动开始)
镜像:http://www.speedyshare.com/files/27697250/WpfApplication1.zip
答案 0 :(得分:3)
1。将App.xaml移动到您想要的位置
2。重构App.xaml.cs命名空间以适应新的更改:
3。重建您的解决方案。
[4]。转到项目属性并将Startup对象设置为新位置的App.xaml文件。
[5]。运行您的应用程序,它应该成功运行:)
答案 1 :(得分:0)
我不能在我的问题上复制这个问题。这是我试过的:
我在App.xaml的资源中创建了一个带有样式的应用程序。我将App.xaml移动到了一个子目录。我有另一个窗口,它使用App.xaml资源中定义的样式(他驻留在不同的目录中),它能够很好地解决它。我将.. \添加到原始StartupUri
的开头。
我做了一些搜索,你使用的是什么版本的Visual Studio?显然,在VS2008中可能存在与您的问题相关的错误:
http://bengribaudo.com/blog/2010/08/19/106/bug-single-application-resources-entry-ignored
他说这个错误的解决方法是在x:Name
上设置Application
属性。希望有所帮助!
编辑:我也尝试过处理Startup
事件,而不是使用StartupUri
,但仍然可以正常使用。
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
new MainWindow().Show();
}
}
编辑第2部分:
好的,我将SolidColorBrush包含在ResourceDictionary中:
<ResourceDictionary>
<SolidColorBrush Color="LightGray" x:Key="brush" />
</ResourceDictionary>
窗户拿起画笔。设计师不喜欢它,但是当我从StaticResource更改为DynamicResource时,它停止了抱怨。
编辑3:
我只是想到了什么。你安装了VS2010 SP1吗?它与设计师修复了some bugs。
抱歉,我的第2号编辑没有按预期工作。我注意到我的蓝色波浪线在xaml中消失了,但我没有检查设计师。 x__x