C# XAML设计器可以';无法定位资源
我在共享项目()中创建了自定义控件 运行时一切正常,但xaml设计器引发异常: 找不到资源“mycontrol.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") };
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,我的错…:-)