gpt4 book ai didi

silverlight - 以编程方式访问 ResourceDictionary 项目

转载 作者:行者123 更新时间:2023-12-03 14:40:28 24 4
gpt4 key购买 nike

我有一个名为“MySilverlightControls”的 Silverlight 控件程序集。在该程序集中的几个文件夹中,我有一个类从第三方供应商那里扩展了网格列,我们称之为“MyImageColumn.cs”。

我还创建了一个名为 Generic.xaml 的资源字典。 ,这位于 Themes程序集的文件夹。在该资源字典中,我定义了一个名为 MyImageColumnTemplate 的 ControlTemplate:

<ControlTemplate x:Name="MyImageColumnTemplate" >
<Grid Margin="8,8,4,4" MaxHeight="32" MaxWidth="32">
<Grid.Resources>
<localGrid:StatusColumnImageConverter x:Key="ImageContentConverter"/>
</Grid.Resources>
<Border Margin="5,5,0,0" Background="Black" Opacity="0.15" CornerRadius="5" />
<Border Background="#FF6E6E6E" CornerRadius="4,4,4,4" Padding="4" Margin="0,0,5,5">
<Border Background="White" CornerRadius="2,2,2,2" Padding="3">
<Image Source="{Binding EditValue, Converter={StaticResource ImageContentConverter}}" Stretch="Uniform"/>
</Border>
</Border>
</Grid>
</ControlTemplate>

我的问题是:从 MyImageColumn,我如何以编程方式引用/加载这个控件模板,以便我可以将它分配给列上的一个属性?我希望使用与此类似的语法:
ControlTemplate ct = (ControlTemplate)Application.Current.Resources["MyImageColumnTemplate"];

但这总是返回空值。当我在 Reflector 中加载程序集时,我看到 Generic.xaml文件在那里,资源的名字是 MySilverlightControls.g.resources ,其中的路径是 themes/generic.xaml .

我如何才能准确地访问此资源字典中的各个项目?

最佳答案

解决了。

我需要:

  • 加载我的资源字典
  • 将其与应用程序的资源合并
  • 从应用程序资源加载我的控件模板

  • 作为加载资源字典的一部分,我还必须注册 pack URI 方案。然后,由于我的 xaml 的轻微错误,我不得不处理一些基于 COM 的疯狂异常。我还必须将我的 xaml 移动到一个单独的资源字典文件中,尝试通过 generic.xaml 执行此操作时不断抛出错误(即使 xaml 是完美无缺的并且可以使用新创建的资源字典文件正常加载)。所以,简化一下,这是代码:
    if (!UriParser.IsKnownScheme("pack"))
    UriParser.Register(new GenericUriParser(GenericUriParserOptions.GenericAuthority), "pack", -1);

    ResourceDictionary dict = new ResourceDictionary();
    Uri uri = new Uri("/MySilverlightControls;component/themes/Dictionary1.xaml", UriKind.Relative);
    dict.Source = uri;
    Application.Current.Resources.MergedDictionaries.Add(dict);
    ControlTemplate ct = (ControlTemplate)Application.Current.Resources["MyImageColumnTemplate"];

    我已在 this blog post 中发布了此解决方案的完整详细信息.

    关于silverlight - 以编程方式访问 ResourceDictionary 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2032294/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com