WinRT上的自定义ResourceDictionary可在运行时或设计时运行

时间:2014-10-23 08:55:00

标签: c# windows-runtime winrt-xaml

我使用了来自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>

0 个答案:

没有答案