【问题标题】:Merging ResourceDictionaries changing custom control pathing合并资源字典更改自定义控件路径
【发布时间】:2021-05-06 03:13:41
【问题描述】:

Net 5 WFP 应用程序问题 VS v.16.9

我的自定义控件,应该显示一个普通的在运行时没有显示。我想我知道发生了什么,但不知道如何解决。

合并我的 Generic.xaml 文件中的资源字典以引用我的自定义控件的源会导致蓝色波浪线和鼠标悬停工具提示 “找不到资源 'ControlsFolder/CustomControl.xaml'”

如果我删除我的合并字典,鼠标悬停工具提示会更改为 "Projectnamespace.ControlsFolder.CustomControl"

在我的 MainWindow.xaml 中调用带有工具提示的 CustomControl,如下所示。

<Control:CustomControl/>

我认为导致问题的字典合并是...

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

  <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="/ControlsFolder/CustomContol.xaml"/>
  </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary>
    

我的 CustomControls.cs 有下面的构造函数

static CustomControl()
{
    DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomControl), new FrameworkPropertyMetadata(typeof(CustomControl)));
}

据我了解,此构造函数会搜索 Themes/Generic.xaml 文件以找出我的自定义控件的位置,以便将默认元数据添加到我的自定义控件。但我认为,当我添加合并的资源字典时,它会更改我的 CustomControl 调用的路径以在 /ControlFolder/CustomControl.xaml 中搜索我的样式,而不是默认路径应该是“Projectnamespace.ControlsFolder.CustomControl”。

或者我犯了一个对初学者来说根本不直观的简单错误。

也许我可以向 CustomControl 添加一个属性,将路径设置回另一个。有没有人知道问题是什么?

但我应该会在屏幕上看到我的风格显示

【问题讨论】:

    标签: wpf resourcedictionary


    【解决方案1】:

    欢迎来到 SO!试试这个 URI:

    <ResourceDictionary Source="/YourProjectName;component/ControlsFolder/CustomContol.xaml" />
    

    【讨论】:

    • 成功了,它摆脱了波浪状的蓝线并将工具提示更改为“Projectnamespace.ControlsFolder.CustomControl”。有趣的是,我的线在运行时没有显示的原因是因为它似乎没有画线。我的 代码在某种程度上有问题。我能够证明我可以从我的工具箱中拖放矩形并用两行参考代码绘制矩形。所以合并的字典代码不是我不能画线的原因,但至少弯曲的蓝色线消失了。
    • 是的,我的线没有画出来是因为我是个白痴。我随机选择了一种颜色来测试我的自定义控件是否正常工作,恰好是爱丽丝蓝。在我的白色背景下,它太微弱而无法注意到。除了那条弯曲的蓝线之外,一切都一直运行良好。
    • 我认为这有什么好处是教程和 youtuber 给我留下的印象是最好的做法是避免使用拖放工具箱,因为你不能充分利用软件通过这样做。但是在制作自定义控件时,拖放似乎更有意义。 Visual Studio 会自动填充属性、添加旋转块或大量您在尝试手动操作时永远不会学到的东西。在我将拖放代码复制并粘贴到我的自定义控件 xaml 之前,只需清理拖放代码即可。
    猜你喜欢
    • 2015-08-29
    • 2011-02-07
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2020-06-02
    相关资源
    最近更新 更多