我正在尝试从我的UserControl
课程中访问TreeViewGroupItemTemplateSelector
中的资源。我无法访问UserControl
课程中的TreeViewGroupItemTemplateSelector
课程。我在格式化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);
答案 0 :(得分:0)
目前还不清楚你想要达到的目标 - 但据我所知......
如果您尝试加载整个用户控件XAML文件 - 作为资源
用户控制XAML不是'资源字典' - 我不确定可能产生的错误。
但只是分开的事情。您可以使用MergeDictionary将任何外部“资源字典”XAML合并到UserControl.Resources中 - 但将该“资源”作为文件单独保存 - 加载,而不是整个用户控制,希望有帮助