首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >引用App.xaml的IOException的ResourceDictionary

引用App.xaml的IOException的ResourceDictionary
EN

Stack Overflow用户
提问于 2019-06-05 23:34:34
回答 1查看 112关注 0票数 1

我试图从一个单独的WPF窗口引用App.xaml的ResourceDictionary。我想在不同的窗口中使用资源,这似乎是推荐的方法。不幸的是,我似乎无法从另一个窗口有效地引用App.xaml。这是我的App.xaml:

代码语言:javascript
复制
<Application x:Class="View.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
         xmlns:ViewModel="clr-namespace:ViewModel;assembly=ViewModel"
         xmlns:local="clr-namespace:View"
         StartupUri="ClockView.xaml">
<Application.Resources>
    <ResourceDictionary>
        <local:PriorityToIconConverter x:Key="PriorityToIconConverter" />
    </ResourceDictionary>
</Application.Resources>

注意:我没有使用MainWindow,所以我用一个总是出现的表单替换了启动URI。我注意到,在其他一些答案中,MainWindow的位置有时是问题所在。在我的例子中,我还没有看到使用ClockView和MainWindow有什么区别。ClockView和MainWindow都存在于根命名空间中,MainWindow只是从未加载过。我也有更多的资源,但为了简洁起见,我删除了它们。

下面是一个简单的代码示例,我正在尝试从ResrouceDictionary引用App.xaml:

代码语言:javascript
复制
<local:AssistantWindow 
    x:Class="View.AutomatorView"
    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:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
    xmlns:properties="clr-namespace:View.Properties"
    xmlns:local="clr-namespace:View"
    mc:Ignorable="d"
    Title="Tool" 
    x:Name="Tool"
    Background="Transparent"
    Height="600"
    Width="450"
    Topmost="{Binding Source={x:Static properties:Settings.Default}, Path=ToolAlwaysOnTop}"
    MinHeight="515"
    MinWidth="150">

<Window.Resources>
    <ResourceDictionary Source="App.xaml" />
</Window.Resources>

再一次,这被简化为简洁。当我尝试加载这个表单时,我得到了异常:

代码语言:javascript
复制
System.Windows.Markup.XamlParseException: ''Set property 'System.Windows.ResourceDictionary.Source' threw an exception.' Line number '21' and line position '10'.'

Inner Exception
IOException: Cannot locate resource 'tool/app.xaml'.

"Tool“的视图位于一个文件夹中,该文件夹也称为”Tool“。但是,xaml和后面的代码不引用这个名称空间,我只是使用文件夹来组织类。它看起来像是在视图所在的文件夹中寻找App.xaml。App.xaml驻留在根命名空间(视图)中。我已经尝试将xaml工具中的源代码修改为:- View.App.xaml - View:App.xaml -View:App.xaml/App.xaml

如何才能让这个引用工作,以便在整个应用程序中共享资源?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-06 07:31:34

您不能像您正在尝试的那样加载App.xaml,因为它实际上不是ResourceDictionary。只能将ResourceDictionary文件指定为源的目标。

但是,如果您在App.xaml中声明了一个资源,您可以在任何地方引用它,而不需要加载它所在的文件。这是自动为你做的。因此,您可以在任何时候使用{StaticResource PriorityToIconConverter}引用转换器。

请注意,如果您将其从默认的启动位置(基本项目文件夹)移动,则可能必须更新其位置。右键单击项目,然后单击“属性”。导航到"Application“选项卡(应该是左侧侧边栏上最上面的元素),并查找"Startup”字段。把它设置为[ProjectName].[Namespace?].[Namespace?].App。当我测试它时,我的测试不需要手动更改位置,但是您的设置可能不一样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56469304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档