C# 添加样式后引发异常

C# 添加样式后引发异常,c#,wpf,data-binding,C#,Wpf,Data Binding,我正在尝试向我的应用程序添加全局样式。将节添加到my App.xaml后,我遇到了一个令人困惑的运行时异常: 中发生类型为“System.IO.IOException”的未处理异常 PresentationFramework.dll找不到资源 “views/views/createjob.xaml” 在设计时,我可以看到我的样式在VisualStudio的“设计/预览”面板中被正确应用 我在网上看到的大多数示例都显示了在样式上设置一个键属性,然后由使用它的每个窗口显式引用。我正在寻找全局性的东西

我正在尝试向我的应用程序添加全局样式。将节添加到my App.xaml后,我遇到了一个令人困惑的运行时异常:

中发生类型为“System.IO.IOException”的未处理异常 PresentationFramework.dll找不到资源 “views/views/createjob.xaml”

在设计时,我可以看到我的样式在VisualStudio的“设计/预览”面板中被正确应用

我在网上看到的大多数示例都显示了在样式上设置一个键属性,然后由使用它的每个窗口显式引用。我正在寻找全局性的东西,也就是说,我不需要每次都遍历代码库并显式引用样式

完整App.xaml

<Application x:Class="TestApp.Views.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:TestApp"
         StartupUri="Views/CreateJob.xaml">
<Application.Resources>
    <Style TargetType="{x:Type TextBox}">
        <Setter Property="VerticalContentAlignment" Value="Center"/>
    </Style>
</Application.Resources>

完整的CreateJob.xaml

<Window x:Class="TestApp.Views.CreateJob"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:TestApp"
    mc:Ignorable="d"
    Title="CreateJob" Height="450" Width="800">
<StackPanel Orientation="Horizontal">
    <Label Content="Name"/>
    <TextBox/>
</StackPanel>

完整的CreateJob.xaml.cs

using System.Windows;

namespace TestApp.Views
{
    /// <summary>
    /// Interaction logic for CreateJob.xaml
    /// </summary>
    public partial class CreateJob : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}
使用System.Windows;
命名空间TestApp.Views
{
/// 
///CreateJob.xaml的交互逻辑
/// 
公共部分类CreateJob:Window
{
公共主窗口()
{
初始化组件();
}
}
}
完整App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
</configuration>

根据您提供的代码,您正在查找错误的资源

您让它查找
视图/CreateJob.xaml
,但您给我们的是标题为“CreateJob”的
MainWindow.xaml
。资源uri正在查找实际的文件名,而不是标题。像这样更新它,它就会工作

StartupUri="Views/MainWindow.xaml"

您的CreateJob.xaml位于哪里?您是指“views/views/createjob.xaml”而不是“views/createjob.xaml”吗?这就是错误消息所暗示的。@mm8它与App.xaml([project]/Views/CreateJob.xaml)位于同一文件夹和项目中。删除样式后,CreateJob.xaml将正确加载。@mm8 App.xaml位于[project]/Views/下。正确,如果我的App.xaml没有样式,它运行良好。请提供您问题的可复制示例:@mm8我在相同的结构中从头开始重新创建了一个最小项目,并更新了我问题中的代码。忽略样式后,它将运行并显示基本表单。添加样式后,它会抛出完全相同的异常。抱歉。这是由于试图提供更新的完整代码示例造成的。我已经更新了代码。问题仍然存在。如果StartupUri=“Views/CreateJob.xaml”>在Application.Resources中没有样式,则应用程序可以正常加载。一旦我添加了一个样式,就会出现运行时异常,突然找不到CreateJob.xaml。我认为StartupUri应该是CreateJob.xaml,因为它与App.xaml位于同一个目录中。我还认为错误消息是正确的,因为相对路径Views/CreateJob.xaml是错误的。但是,我不明白为什么省略样式时不抛出此异常。这似乎是我的代码中的一个bug(不正确的StartupUri)和WPF的奇怪/不一致行为的组合。