2012-05-02 3 views
1

MVVM 패턴을 사용하여 작은 WPF 응용 프로그램을 작성하고 있습니다.MVVM의 스타일 지정 버튼

버튼에 대한 스타일 리소스를 메인 윈도우에 설정 했으므로 버튼을 뷰에 적용하고 싶습니다. 문제는 버튼 중 일부가 트리거가있는 스타일을 사용하고 있다는 것입니다. 그래서 나는 여기에 일반적인 하나

에서이 스타일을 상속하고 싶은 내 메인 윈도우 코드 : 여기

<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입니다 I가 시도

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

/UserControl을 사용 BasedOn는 = "{정적 리소스는 {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