我有一個名爲「MySilverlightControls」的Silverlight控件組合件。幾個文件夾放入該程序集我有一個類從第三方供應商擴展網格列,我們稱之爲「MyImageColumn.cs」。以編程方式訪問ResourceDictionary項目
我還創建了一個名爲Generic.xaml
的資源字典,它位於程序集的Themes
文件夾中。在這種資源字典我已經定義了一個控件模板稱爲 MyImageColumnTemplate:
<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
。
我該如何到達此資源字典中的各個項目?
爲我節省了很多時間。非常感謝博客文章。做得好。 – captonssj 2013-05-07 23:04:56
只需記下@slugster爲什麼做了前兩行。 'pack' Uri樣式默認沒有加載和註冊,導致'Uri uri = new Uri(任何包Uri樣式的字符串);'拋出一個異常。在允許自己使用'pack' Uri之前,這種獲得註冊的方式對你的代碼的干擾要比等到你創建第一個'FrameworkElement'之後要少。 – 2015-10-08 22:39:56