Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!


но тот факт что за два дня поисков я не нашел более приемлемой бесплатной реализации говорит о том, что на этом фронте не всё ладно.
<control:Button Height="75"
Grid.Row="1"
Margin="0"
Icon="/icons/lens.png"
IconMargin="4"/>
<IconButton IconTemplate="{StaticResource IconTriangle}" Content="Привет!" Command="{Binding MyFancyCommand}" />
внутрь которого помещаем два ContentPresenter (один для Icon, второй для Content)
ContentPresenter используется для указания в шаблоне значения свойства контрола Content. А для чего нужен второй ContentPresenter? Чем это лучше использования Image для описания иконки в шаблоне?<ControlTemplate TargetType="IconButton">
<Button Command="{TemplateBinding Command}"
CommandParameter="{TemplateBinding CommandParameter}"
Margin="0"
Padding="0"
HorizontalAlignment="Stretch">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<ContentPresenter Grid.Column="0"
Content="{TemplateBinding Icon}"
ContentTemplate="{TemplateBinding IconTemplate}"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Margin="10,0,0,0" />
<ContentPresenter Grid.Column="1"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
Margin="{TemplateBinding Padding}" />
</Grid>
</Button>
</ControlTemplate>
Content="{Binding (Ext:E.Icon), RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Button}}}"Content="{TemplateBinding (Ext:E.Icon)}"Content="{Binding (Ext:E.Icon), RelativeSource={RelativeSource TemplatedParent}}"
WPF: 4 варианта кнопки с иконкой и текстом