Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XAML设计器可以';无法定位资源_C#_Wpf_Xaml Designer - Fatal编程技术网

C# XAML设计器可以';无法定位资源

C# XAML设计器可以';无法定位资源,c#,wpf,xaml-designer,C#,Wpf,Xaml Designer,我在共享项目()中创建了自定义控件 运行时一切正常,但xaml设计器引发异常: 找不到资源“mycontrol.xaml” 加载控件的样式时出现问题: public class MyControl: Control { public MyControl() { Resources = new ResourceDictionary() { Source = new Uri("pack://application:,,,/mycontrol.xaml") };

我在共享项目()中创建了自定义控件

运行时一切正常,但xaml设计器引发异常:

找不到资源“mycontrol.xaml”

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

public class MyControl: Control
{
    public MyControl()
    {
        Resources = new ResourceDictionary() { Source = new Uri("pack://application:,,,/mycontrol.xaml") };
        Style = (Style)Resources["somekey"];
    }
}
为什么它在运行时工作而在设计时不工作


我可以检测设计时间,但接下来该怎么办?

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

pack://application:,,,/PROJECTNAMESPACE;component/mycontrol.xaml
我会试试看

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

如果资源位于同一程序集中,则无需指定命名空间。让我大吃一惊的是,这种语法让设计师很高兴。我以前使用过它,但它需要组装,在共享项目的情况下这是一个问题,但不是您的问题;)。谢谢。这绝对是错误的,因为
siteoforigin
是原始文件的XAML站点的包URI,存储在启动可执行程序集的位置(),除非您还建议在外部存储XAML。aaaaah,我的错…:-)