С помощью следующего кода 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 является простым наследованием Кнопки, никакого другого кода.
btn1 и btn3 появляются как ожидалось; плоский. btn2 кажется полу повышенный и имеет черную границу.
Порядок я добавляю кнопки к панели инструментов, не имеет никакого значения. Это - странное появление btn2 перемещается в местоположение, что это добавляется к панели инструментов.
Я вывел и сравнил свойства, к 2 уровням, btn1 и btn2 и существуют только ожидаемые различия за исключением:
btn1. DependencyObjectType. IsSecurityCritical=False btn2. DependencyObjectType. IsSecurityCritical=True
и
btn1. DependencyObjectType. IsSecurityTransparent=True btn2. DependencyObjectType. IsSecurityTransparent=False
Что-либо еще я должен изучить?
Проверьте свой XAML на наличие стиля по умолчанию, который применяется к MyButton
.
Обновление : стандартные темы WPF включают стили по умолчанию для хорошо известных элементов управления. Ваш MyButton
не входит в их число. Вам нужно расширить словарь тем стилем для вашего класса, или вам нужно объявить стиль по умолчанию для вашего класса, основанный на стиле Button
.
Вот простейший стиль, который вы можете попробовать добавить в свой словарь ресурсов (где local:
- объявление XAML вашего пространства имен CLR - вам нужно добавить его в свой корневой элемент 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}" />