我使用了来自dev hedgehog about using a ResourceDictionary only in design mode的想法,并尝试将其应用于WinRT应用。但不幸的是,它在设计时或运行时都不起作用。
如果Source属性为string
,则它在设计模式下不起作用,并且Visual Studio会显示错误消息“无效的URI:无法确定URI的格式。”。
如果Source的类型为URI
,则它在设计模式下工作,但我在运行时遇到异常:'无法分配给属性Source'。
是否有可能在两种情况下均可使用?
public class DesignTimeResouceDictionary : ResourceDictionary
{
// works at run-time
public new string Source {
get {
return base.Source.ToString();
}
set {
if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)
base.Source = new Uri(value);
}
}
// works at design time
public new Uri Source {
get {
return base.Source;
}
set {
if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)
base.Source = value;
}
}
}
App.xaml中的用法:
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<local:DesignTimeResourceDictionary Source="OnlyForDesignTime.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResouceDictionary>