2012-01-13 13 views
5

Vine de desarrollo web y WinForms a WPF y tal vez todavía no entendí el concepto. Puedo definir estilos generales para mi aplicación en la aplicación.xaml. Por ejemplo, definí el estilo para todos mis controles de cinta en este archivo.Mezclando estilos generales de WPF con ResourceDictionary

Luego probé Microsoft Blend y encontré ResourceDictionary, que es una especie de Resource File .resx que conocía de WinForms.

Pero como veo, no es posible mezclar estos dos conceptos. Por ejemplo, el siguiente código xaml no funcionará porque ResourceDictionary tiene que ser el único hijo.

<Application x:Class="Wpf.MyApplication.App" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
      xmlns:ribbon="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary" 
      StartupUri="MyMainWindow.xaml"> 
    <Application.Resources> 
     <!-- Resources scoped at the Application level should be defined here. --> 
     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="Styles/RibbonStyle.xaml"/> 
      </ResourceDictionary.MergedDictionaries> 
      <BitmapImage x:Key="IconDokumentNeu" >Images/NewDocument_32x32.png</BitmapImage> 
     <SolidColorBrush x:Key="LightGrayBrushKey">WhiteSmoke</SolidColorBrush> 
    </ResourceDictionary> 
    <Style TargetType="{x:Type ribbon:RibbonWindow}"> 
     <Setter Property="Icon" Value="../time2_32.png" /> 
     <Setter Property="TextOptions.TextFormattingMode" Value="Display" /> 
    </Style> 
    </Application.Resources> 
</Application> 

Parece que realmente no entendí el concepto. Quizás puedas ayudarme, por qué esto no es posible y cómo puedo usar estilos generales junto a ResourceDictionary.

Respuesta

16

Ya tiene recursos definidos "al lado" del diccionario, una imagen y un pincel.

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <!-- Dictionaries from file here --> 
     </ResourceDictionary.MergedDictionaries> 

     <!-- Other resources here --> 
    </ResourceDictionary> 
</Application.Resources> 
+0

lo sé, pero ¿cómo lo tengo a partir de descripciones de MSDN, estilos en una ResourceDictionary debe tener una clave. Pero quiero definir estilos generales sin una clave para que estén habilitados por defecto. –

+0

@ René: ¿Entonces el problema es que aparece un error si agrega un estilo con el mismo TargetType como estilo en el diccionario fusionado? –

+0

No. Simplemente no sabía que Resource Dictionary toma estilos con solo un TargetType sin clave. Hasta ahora... –

3

Sólo incluye el: estilo {x} en el tipo de diccionario de recursos

<ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
        <!-- Dictionaries from file here --> 
      </ResourceDictionary.MergedDictionaries>  
      <Style TargetType="{x:Type ribbon:RibbonWindow}">   
       <Setter Property="Icon" Value="../time2_32.png" />   
       <Setter Property="TextOptions.TextFormattingMode" Value="Display" /> 
      </Style> 
    </ResourceDictionary> 
Cuestiones relacionadas