2012-05-02 6 views
1

MVVMパターンを使用して小さなWPFアプリケーションを作成しています。MVVMのスタイリングボタン

メインウィンドウにボタン用のスタイルリソースをいくつか設定して、それらをボタンに適用してビューに適用したいと考えています。問題は、ボタンの中にはトリガーのあるスタイルがあることです。だから私はここで、一般的な1

からこのスタイルを継承したい私のメインウィンドウのコードです:ここ

<Window.Resources> 
    <DataTemplate DataType="{x:Type vm:HomeViewModel}"> 
     <views:HomeView/> 
    </DataTemplate> 
    <DataTemplate DataType="{x:Type vm:DetailReportViewModel}"> 
     <views:DetailReportView/> 
    </DataTemplate> 
    <DataTemplate DataType="{x:Type vm:TransferViewModel}"> 
     <views:TransferView/> 
    </DataTemplate> 
    <Style TargetType="{x:Type Button}"> 
     <Setter Property="Margin" Value="5"/> 
     <Setter Property="MinWidth" Value="30"/> 
     <Setter Property="Foreground" Value="Red"/> 

    </Style> 
    <Style TargetType="{x:Type ComboBox}"> 
     <Setter Property="Margin" Value="5"/> 
    </Style> 
    </Window.Resources> 

私がしようとしたボタンのXAMLは、私の見解/ユーザーコントロール

<Button Content="Delete" Command="{Binding DeleteReportCommand}"> 
      <Button.Style> 
       <Style TargetType="{x:Type Button}"> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding Mode}"> 
          <DataTrigger.Value> 
           <vm:Mode>Add</vm:Mode> 
          </DataTrigger.Value> 
          <Setter Property="Visibility" Value="Collapsed"/> 
         </DataTrigger> 
         <DataTrigger Binding="{Binding Mode}"> 
          <DataTrigger.Value> 
           <vm:Mode>Edit</vm:Mode> 
          </DataTrigger.Value> 
          <Setter Property="Visibility" Value="Visible"/> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Button.Style> 
     </Button> 

にあります使用BASEDONは= "{StaticResource {X:継承するタイプボタン}動作するように思われません(IMGを参照してください)

enter image description here

私はキー名で試しましたが、静的リソースは同じビューにないのでキー名を見つけることはできません。 BasedOnは動的リソースを受け入れていません。 私が紛失しているものは何ですか?

あなたは

+0

私はパネルのリソース内側ボタンの框を定義し、同じ問題を抱えているが、私は上記のアプローチが失敗した理由を知っていいだろうapp.xamlするスタイルを移動する必要はありません。 –

答えて

0

あなたは別のリソースディクショナリファイル内のすべてのカスタムスタイルを置くことができ感謝して、あなたはusercontrol.resourcesでそれを追加することができます。 http://www.codeproject.com/Articles/35346/Using-a-Resource-Dictionary-in-WPF

それとも、app.xaml(Application.Resources)内のすべてのそれらを置くことができます。

は、この参照してください。

は、この参照してください:http://msdn.microsoft.com/en-us/library/system.windows.resourcedictionary.aspx

+0

ありがとうございます。私はすべてをapp.xamlに入れました。なぜ私はこれを以前に試していないのではないのですか? – Regis