2012-01-13 8 views
5

私はWeb開発とWinFormsをWPFに持ってきましたが、私はまだそのコンセプトを手に入れませんでした。 app.xamlで私のアプリケーションの一般的なスタイルを定義することができます。たとえば、このファイルのすべてのリボンコントロールのスタイルを定義しました。一般的なWPFスタイルとResourceDictionaryを組み合わせる

私はMicrosoft Blendを試して、ResourceDictionaryを見つけました。ResourceDictionaryは、WinFormsから知っていたリソースファイル.resxのいくつかのものです。

しかし、私はこれらの2つの概念を混在させることはできません。たとえば、ResourceDictionaryが唯一の子でなければならないため、次のxamlコードは機能しません。

<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> 

私は本当にコンセプトを得ていないようです。たぶんあなたが私を助けることができます、なぜこれは不可能で、私はResourceDictionaryの隣に一般的なスタイルを使用することができます。

答えて

16

すでに「横に」辞書、1つの画像、1つのブラシが定義されています。

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

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

私は知っているが、どのように私は、MSDNの記述からそれを得たが、のResourceDictionaryでスタイルが鍵を持っている必要があります。しかし、私は一般的なスタイルをキーなしで定義して、デフォルトとして有効にしたいと考えています。 –

+0

@René:問題は、マージされた辞書のスタイルと同じTargetTypeのスタイルを追加するとエラーになるということですか? –

+0

私は、リソースディクショナリがキーなしでTargetTypeだけでスタイルをとることは知らなかった。今まで... –

3

ちょうど含まれます:リソースディクショナリで{Xタイプ}スタイル

<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> 
関連する問題