2014-03-01 48 views
4

我有幾種常見樣式,我想在我的Windows 8.1應用程序的多個頁面中共享它們。如何使用ResourceDictionary中定義的樣式

我知道我可以用merge dictionaries option來實現,但我不知道如何使用字典中定義的樣式。

我嘗試這樣做:

<Page.Resources> 
<ResourceDictionary x:Key="lol"> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="Themes/Generic.xaml" /> 
     <ResourceDictionary> 
      <Style x:Key="TextViewAllStyle" TargetType="TextBlock"> 
      </Style> 
     </ResourceDictionary> 
    </ResourceDictionary.MergedDictionaries> 
    <Style x:Key="TextViewAllStyle2" TargetType="TextBlock"> 
    </Style> 
</ResourceDictionary> 
<Style x:Key="TextViewAllStyle3" TargetType="TextBlock"> 
</Style> 
</Page.Resources> 

但我的Visual Studio中只能看到第三個......

<TextBlock Style="{StaticResource ResourceKey=TextViewAllStyle3}"/> 

回答

11

以下標記添加到您的App.xaml:

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      -- reference your dictionaries here -- 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

每個字典都可以通過完整路徑添加:

<ResourceDictionary Source="pack://application:,,,/MySolution.MyProject;component/Theme/Generic.xaml"/> 

如果其相對路徑在同一個項目:

<ResourceDictionary Source="Themes\Generic.xaml"/> 

或定義在線:

<Style x:Key="TextViewAllStyle" TargetType="TextBlock"> 
</Style> 
+0

它給我一個錯誤的資源屬性僅可一次設定。 – C4u

+0

您可能已在資源標籤中定義了多個詞典或其他資源。如果你將它們移動到MergedDictionaries,它應該沒問題。請參閱此鏈接http://stackoverflow.com/a/3425956/366064 – Bijan

+0

感謝您的回覆。我發現我的問題。遠離形成定義的字典,我仍然努力在我的app.xaml內的一些自定義樣式。我只需要在Merde-block中用''將它們包圍起來。一切安好 :)。 – C4u

相關問題