我正试图从我的TreeViewGroupItemTemplateSelector
类访问UserControl
中的资源。我不能访问TreeViewGroupItemTemplateSelector
类中的UserControl
类。我有问题格式化Uri
。
PackageExplorer.xaml
是UserControl
,位于本地程序集的根命名空间中,该程序集也包含TreeViewGroupItemTemplateSelector
类。
我得到以下错误:
无法找到资源'resources/packageexplorer.xaml'
在Uri实例化期间。
public class TreeViewGroupItemTemplateSelector : DataTemplateSelector
{
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
var configGroup = item as IConfigurationGroup;
if (configGroup == null)
return null;
var resourceDictionary = new ResourceDictionary();
resourceDictionary.Source = new Uri
("/myAssembly;component/Resources/myUserControl.xaml",
UriKind.RelativeOrAbsolute);
if (configGroup.ItemType == typeof (ReferencePackageConfigurationItem))
return resourceDictionary["RefreshableHierarchicalDataTemplate"] as DataTemplate;
else
return resourceDictionary["DefaultHierarchicalDataTemplate"] as DataTemplate;
}
}
}
XAML(代码片段)如下所示:
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary>
<HierarchicalDataTemplate x:Key="DefaultHierarchicalDataTemplate"
DataType="{x:Type localconfig:ConfigurationGroup}"
ItemsSource="{Binding Path=Items}"
ItemTemplateSelector="{StaticResource TreeViewGroupItemTemplateSelector}"/>
<HierarchicalDataTemplate x:Key="RefreshableHierarchicalDataTemplate"
DataType="{x:Type localconfig:ConfigurationGroup}"
ItemsSource="{Binding Path=Items}"
ItemTemplateSelector="{StaticResource TreeViewGroupItemTemplateSelector}"/>
我也尝试访问如下所示的资源,结果相同:
resourceDictionary.Source = new
Uri("/Resources/myUserControl.xaml", UriKind.RelativeOrAbsolute);
:
resourceDictionary.Source = new
Uri("myUserControl.xaml", UriKind.RelativeOrAbsolute);
不清楚你想要实现什么-但据我所知…
如果您试图加载整个用户控制XAML文件-作为资源
用户控件XAML不是一个"资源字典"——我不确定这会产生什么错误。
但是只是把分开。你可以使用MergeDictionary将任何外部的"资源字典"XAML合并到UserControl中。