我有一个名为"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"];
但是这总是返回null。当我在Reflector中加载程序集时,我看到Generic.xaml
文件存在,资源的名称为MySilverlightControls.g.resources
,并且其中的路径为themes/generic.xaml
。
我应该如何访问此资源字典中的各个项?
pack
Uri样式未加载和注册,导致Uri uri = new Uri(any pack Uri style string);
抛出异常。这种获取方式比等到创建第一个FrameworkElement
后才允许使用pack
Uri对您的代码更少干扰。 - Jesse Chisholm