gpt4 book ai didi

wpf - XAML 智能感知不适用于引用的程序集资源

转载 作者:行者123 更新时间:2023-12-04 00:05:06 25 4
gpt4 key购买 nike

我正在尝试创建一个包含核心样式、资源、控件等的项目 dll 文件。然后将其引用到各种其他项目中,用作图形基础以统一外观。

无论如何,我已经设置了图形项目,我可以在其他项目中使用它,而且它似乎都能正确显示。但是,我的静态资源的 XAML 智能感知似乎不起作用。

这是我的资源字典引用:

<ResourceDictionary Source="pack://application:,,,/BIT.GraphicElements;component/BITCoreStyles.xaml" />

如您所见,我使用包表示法在其程序集中引用它。我可以像我期望的那样设置元素的样式(StButtonAction 在上面的字典中):
Style="{StaticResource StButtonAction}"

但是,我必须手动输入。 Intellisense 没有提供它作为一个选项,但如果我手动输入它会成功应用它。如果我将项目添加到解决方案中并在那里引用它,它也可以工作,但是这旨在供那些不一定有权访问图形项目的人使用,因此从长远来看这不是一个好的解决方案......

我错过了什么?有没有办法让 Intellisense 为这些工作?

最佳答案

也许这会帮助 future 的搜索者,即使它不能解决您的特定问题。
当您的解决方案涉及外部 dll 时,您偶尔会发现资源在设计时没有加载。在所有。即使您在 app.xaml 中合并,在您运行之前也不会出现这些情况。
对我来说,它看起来像是某种微妙的错误。

我解决这个问题的方法是使用最初为 Blend 设计的功能。我们现在在 Visual Studio 中使用混合设计器。

在解决方案资源管理器中,将资源字典添加到属性。是的。特性。首先在您的项目中创建它并将其拖到那里。这必须称为 DesignTimeResources。然后,这可以合并您只想在设计时使用的任何资源字典,或者当您遇到问题时,您会认为资源字典没有在设计时加载。
我的是在军队编辑器中,但使用来自引用的 dll UILIb 的资源。看起来像:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ArmyEditor">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/UILib;component/Resources/UILibResources.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

这是一个有点奇怪的资源字典,但到目前为止还没有什么特别奇怪的。

接下来是许多开发人员永远不会做的事情 - 编辑您的 csproj。

右键单击您的项目并选择卸载。
再次右键单击它并进行编辑。

在那里,您将拥有构成您项目的所有内容的条目。当然,打破这个会很糟糕,所以也许你想先备份。

如果您不使用混合,那么我认为这里重要的是添加一个节点,该节点显示 ContainsDesignTimeResources True,但这是我的:
<Page Include="Properties\DesignTimeResources.xaml" Condition="'$(DesignTime)'=='true' OR ('$(SolutionPath)'!='' AND Exists('$(SolutionPath)') AND '$(BuildingInsideVisualStudio)'!='true' AND '$(BuildingInsideExpressionBlend)'!='true')">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
<ContainsDesignTimeResources>true</ContainsDesignTimeResources>
</Page>

保存您的编辑。
重新加载您的项目。
当设计器打开时,您应该发现从中加载了资源。也许这将有助于智能感知找到它们。

我之前提到过这一点,但是……根据我的经验,这种对资源的智能感知通常是不可靠的。

这绝对解决了我在此解决方案中遇到的类似问题。当您想临时覆盖资源词典以进行本地化/品牌测试时,它也很有用。

关于wpf - XAML 智能感知不适用于引用的程序集资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49779105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com