<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CuratioCMS.Client.UI.Controls">
<Style BasedOn="{StaticResource {x:Type Button}}" TargetType="{x:Type local:ImageButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:ImageButton}">
<StackPanel Height="Auto" Orientation="Horizontal">
<Image Width="20"
Height="20"
Margin="10,4,0,4"
Source="{Binding Path=Image,
RelativeSource={RelativeSource TemplatedParent}}"
Stretch="Fill" />
<TextBlock Margin="5,0,10,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
FontSize="12"
FontWeight="Bold"
Foreground="{TemplateBinding Foreground}"
Text="{TemplateBinding Label}" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
this is the code inside Generic.xaml for ImageButton custom control. whit works as expected but I can not inherit from Base button stale so instead of inheriting all base styling from Button this style only creates custom control without any base styles and as far as
BasedOn="{StaticResource {x:Type Button}}"
inside VS with line shows error which says Resource ‘{x:Type System.Windows.Controls.Button}’ is not found
I do not know how to achieve desired styling and why this error message is there showing up inside Visual studio editor
You are defining a style based on a generic button style (which is inside Generic.xaml) and then redefining the template of the style. this way the base style will be overwritten.
if you wish to change the style a bit, you got two options:
option1:
TargetType="{x:Type Button}"and addx:Key="someName"to its properties){StaticResource someName}{StaticResource someName}option2:
option 2 is generally a better solution since it does not require lots of change, but I’ve been through what you wanted to do some time ago and I didn’t find any way to avoid duplicated style code.