2010-06-22 2 views
1

다음 코드를 사용하면 btn2는 btn1과 btn3과 다르게 보이지만 정확히 동일한 이미지를 사용합니다.WPF 단추를 상속하면 도구 모음에서 이미지의 모양이 바뀝니다.

Public Class MyToolBar 
    Inherits ToolBar 

    Public Sub New() 
     MyBase.New() 

     Dim bmp1 = New BitmapImage(ImageUri.DeleteItem) 
     Dim bmp2 = New BitmapImage(ImageUri.DeleteItem) 
     Dim bmp3 = New BitmapImage(ImageUri.DeleteItem) 
     Dim img1 = New Image With {.Source = bmp1} 
     Dim img2 = New Image With {.Source = bmp2} 
     Dim img3 = New Image With {.Source = bmp3} 

     Dim btn1 = New Button With {.Content = img1} 
     Dim btn2 = New MyButton With {.Content = img2} 
     Dim btn3 = New Button With {.Content = img3} 

     Me.AddChild(btn1) 
     Me.AddChild(btn2) 
     Me.AddChild(btn3) 

    End Sub 

End Class 

Public Class MyButton 
    Inherits Button 
End Class 

코드의 유일한 차이점은 btn2가 MyButton으로 구성된다는 것입니다. MyButton은 Button의 단순 상속이며 다른 코드는 없습니다.

btn1 & btn3이 예상대로 나타납니다. 플랫. btn2는 반정 도형으로 나타나며 검은 색 테두리가 있습니다.

단추를 도구 모음에 추가하는 순서는 아무런 차이가 없습니다. 즉, btn2의 이상한 모양이 툴바에 추가 된 위치로 이동합니다.

I 덤프와 비교 속성을, 2 단계로, 인 btn1과 btn2의과를 제외하고 유일한 예상되는 차이가있다했습니다

btn1.DependencyObjectType.IsSecurityCritical = 거짓 btn2.DependencyObjectType.IsSecurityCritical = TRUE가

btn1.DependencyObjectType.IsSecurityTransparent = 진정한 btn2.DependencyObjectType.IsSecurityTransparent = 거짓

내가 조사해야 할 것은 무엇입니까?

답변

2

XAML에서 MyButton에 적용되는 기본 스타일을 확인하십시오.

업데이트 : 표준 WPF 테마에는 잘 알려진 컨트롤의 기본 스타일이 포함되어 있습니다. MyButton은 그 중 하나가 아닙니다. 클래스의 스타일로 테마 사전을 확장해야하거나 Button 스타일을 기반으로하는 클래스의 기본 스타일을 선언해야합니다.

다음은 (local: 당신의 CLR 네임 스페이스의 XAML 선언 - 당신은 루트 XAML 요소에이를 추가해야합니다) 리소스 사전에 추가하려고 할 수있는 간단한 스타일의

<Style BasedOn="{StaticResource {x:Type Button}}" 
     TargetType="{x:Type local:MyButton}" /> 

업데이트 2 : 버튼이 툴바의 일부인 경우 대신 (: - P) :

<Style BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" 
     TargetType="{x:Type local:MyButton}" /> 
+0

거기에 있습니다. 이 스타일은 http://wpfthemes.codeplex.com/을 사용하는 옵션이며, btn1과 btn3이 적절히 변경되지만 btn2는 동일하게 적용됩니다. 따라서 표준 WPF에서 코드의 힌트가없는 btn1 및 btn3에 대한 단추의 스타일을 추측하고 있습니다. 쓰레기. 배울 WPF의 또 다른 기능! –

+0

도움을 주셔서 대단히 감사드립니다. 스타일은 버튼에 맞지만 버튼은 툴바의 일부이므로 올바른 스타일은