2012-05-10 76 views
1

我無法使用四種模塊的Prism 4.0應用程序獲得按鈕樣式。下面是從XAML視圖文件中的單詞數按鈕元素:棱鏡中的動態資源

<Button Name="add" Width ="60" Style="{DynamicResource Red}" Click="add_Click"> Add</Button> 

該應用程序生成並運行,但按鈕的顏色不會出現。我在Shell模塊的Themes文件夾的Generic.xaml文件中定義了樣式。這應該是可以將樣式置於模塊之間共享的地方。在Generic.xaml文件我有:

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:Shell.Controls" 
    xmlns:wc="clr-namespace:System.Windows.Controls;assembly=PresentationFramework"> 

<Style 
    x:Key="{ComponentResourceKey 
    TypeInTargetAssembly={x:Type wc:Button}, 
    ResourceId=Red}" 
    TargetType="wc:Button"> 
    <Setter Property="Foreground" Value="Red" /> 
    </Style> 
</ResourceDictionary> 

我也有在殼牌項目的屬性文件夾AssemblyInfo.cs文件中必要的參考。這應該引導棱鏡應用解決所有樣式從棱鏡Generic.xaml文件引用:

[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)] 

那些仍然與我開始了棱鏡WPF統一模板中提供的原始設置,由大衛·希爾的提供博客[http://blogs.msdn.com/b/dphill/archive/2011/01/16/prism-4-0-template-pack-now-available.aspx]。該模板附帶了Generic.xaml中的一些樣式,但裸模板應用程序僅使用這些樣式來處理外殼程序集中的控件,因此上面顯示的參數爲「無」和「SourceAssembly」。

由於我試圖定義在比外殼模塊的其它模塊使用的樣式,添加以下ThemeInfo屬性到Module的AssemblyInfo.cs中和Module2L

[`assembly: ThemeInfo(ResourceDictionaryLocation.ExternalAssembly, ResourceDictionaryLocation.ExternalAssembly)]` 

我嘗試添加一個到App.xaml的ThemeDictionary擴展如下所示App.xaml &沒有結果。

<Application.Resources> 
    <ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="{ThemeDictionary MyApp}"/> 
    </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
    </Application.Resources> 

也嘗試了包的URL像這樣的App.xaml &得到「無法找到資源」錯誤。

<Application.Resources> 
    <ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="pack://application:,,,/MyApp;Shell/Themes/Generic.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
    </Application.Resources> 

對缺少什麼有什麼想法或想法?謝謝。

回答

0

更新:我通過技術支持從微軟的Marc Rodman那裏得到了答案。兩個變化:

一個是在Generic.xaml,轉變作風定義:

<Style 
x:Key="Red" 
TargetType="Button"> 
    <Setter Property="Foreground" Value="Red" /> 
    </Style> 

另一個變化是App.xaml中:

<Application.Resources> 

    <ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary 
Source="pack://application:,,,/Shell;component/Themes/Generic.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
    </Application.Resources>