[英]How do I access a UserControl resource from a .net class
我试图从我的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.Resources中,但可以单独保留该“资源”作为文件-加载而不是整个用户控件,希望对您有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.