【问题标题】:XAML designer can't locate resourceXAML 设计器找不到资源
【发布时间】:2017-01-03 10:02:21
【问题描述】:

我在共享项目 (resource dictionary in shared project) 中有自定义控件。

在运行时一切正常,但是 xaml 设计器抛出异常:

找不到资源“mycontrol.xaml”。

加载控件样式时出现问题:

public class MyControl: Control
{
    public MyControl()
    {
        Resources = new ResourceDictionary() { Source = new Uri("pack://application:,,,/mycontrol.xaml") };
        Style = (Style)Resources["somekey"];
    }
}

为什么它在运行时有效而在设计时无效?

我可以检测到设计时间,但那该怎么办?

【问题讨论】:

    标签: c# wpf xaml-designer


    【解决方案1】:

    从其他项目加载 xaml 文件时,WPF 设计器似乎有问题。您能否尝试使用此注释加载 xaml 文件:

    pack://application:,,,/PROJECTNAMESPACE;component/mycontrol.xaml
    

    【讨论】:

    • 如果资源位于同一个程序集中,则无需指定命名空间。查看msdn.microsoft.com/en-US/library/…文件包URI
    • 令我大吃一惊的是,这种语法让设计师很高兴。我之前使用过它,但它需要组装,如果共享项目是一个问题,但不是你的问题;)。谢谢。
    【解决方案2】:

    我会试试的

    Uri res = new Uri("pack://siteoforigin:,,,/mycontrol.xaml", UriKind.Relative);
    Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = res });
    

    【讨论】:

    • 这绝对是错误的,因为siteoforiginXAML 源文件站点的打包 URI,存储在启动可执行程序集的位置 (msdn ),除非您还建议在外部存储 xaml。
    • 啊啊啊,我的错... :-)
    猜你喜欢
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多