使用以下代码btn2看起来与btn1和btn3不同,但它们使用完全相同的图像。
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的奇怪外观移动到它被添加到工具栏的位置。
我倾销并将btn1和btn2的属性比较为2级,除了:
之外只有预期的差异btn1.DependencyObjectType.IsSecurityCritical =假 btn2.DependencyObjectType.IsSecurityCritical =真
和
btn1.DependencyObjectType.IsSecurityTransparent =真 btn2.DependencyObjectType.IsSecurityTransparent =假
我还应该研究其他什么?
答案 0 :(得分: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}" />