我正在开发一个项目,其中XAML(和一些相关的IronPython代码)的松散位将由客户端应用程序动态加载和执行。客户端将使用自定义WCF服务(以及一些本地缓存)来检索XAML,后备脚本和相关资源(图标,图像等)。
我想注册一个自定义URI协议/方案,以便动态包的开发人员更容易引用他们的资源,如下所示:
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="custom://MyPackage/Icons.xaml" />
<ResourceDictionary Source="custom://MyPackage/Styles.xaml" />
<!-- ^^^^^^ -->
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
</UserControl>
据我所知,我可以推导出自定义UriParser和register it,但这似乎只是成功的一半。剩下的工作是提供解析自定义URI和检索所需内容所需的任何组件。
是否可以在WPF中提供或覆盖功能,以便在遇到我的自定义URI时调用我的自定义数据服务?或者,如果这是不可能的,还有其他选择吗?
答案 0 :(得分:4)
根据我的理解,您需要创建一个派生自WebRequest
的类,并将其注册到WebRequest.RegisterPrefix
。
答案 1 :(得分:0)
作为替代方案,我想知道您是否可以创建一个继承自ResourceDictionary
的新类(因为它不是sealed
)并为new
提供Source
定义。这样您就可以截取设置为Source
的值,然后针对您的自定义UriParser
运行它。这样您还可以使用结果轻松更新ResourceDictionary
。