添加在App.xaml中创建的按钮到一个视图
问题描述:
所以也许我对这个问题的方法是错误的,但在这里: 我使用了MahApps.Metro框架的按钮,它已经被设计,并且作为内容 它收到一个图标。在项目中,我已经多次使用这样的代码:添加在App.xaml中创建的按钮到一个视图
<Button
Width="30"
Height="30"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
BorderBrush="{DynamicResource AccentBaseColorBrush}"
FocusVisualStyle="{DynamicResource MahApps.Metro.Styles.MetroCircleFocusVisual}"
FontSize="16"
Style="{DynamicResource MahApps.Metro.Styles.MetroCircleButtonStyle}">
<iconPacks:PackIconModern
Width="15"
Height="15"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Foreground="{DynamicResource AccentBaseColorBrush}"
Kind="Refresh" />
<Button.ToolTip>
<Label
Content="{x:Static properties:Resources.TooltipUpdate}"
FontWeight="DemiBold" />
</Button.ToolTip>
</Button>
这是按钮的外观。 (一个启用,两个禁用)
正如你所看到的,这是很多代码在许多视图项目中重复使用。所以我想过把它添加到App.xaml
并通过改变视图中的命令(和边距)来重用它们。
但我不知道如何做到这一点。我试着添加完整的按钮代码,然后只是添加x:Key
,但我不知道如何在视图中使用它。我知道如何使用“全局”样式和模板,但是这已经被设计和完成了控制模板,并且按钮之间唯一改变的是命令和偶尔的工具提示。
答
与App.xaml
你定义使用setter方法的所有默认属性值的x:Key
创建Style
:
<Style x:Key="myStyle" TargetType="Button" BasedOn="{StaticResource MahApps.Metro.Styles.MetroCircleButtonStyle}">
<Setter Property="Width" Value="30" />
<Setter Property="Height" Value="30" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="BorderBrush" Value="{DynamicResource AccentBaseColorBrush}" />
<Setter Property="Content">
<Setter.Value>
<iconPacks:PackIconModern
Width="15"
Height="15"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Foreground="{DynamicResource AccentBaseColorBrush}"
Kind="Refresh" />
</Setter.Value>
</Setter>
</Style>
然后,您可以应用Style
任何Button
元素,并覆盖任何你想要的属性:
<Button Style="{DynamicResource myStyle}" Command="{Binding YourCommand}" Margin="10">
<iconPacks:PackIconModern
Width="15"
Height="15"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Foreground="{DynamicResource AccentBaseColorBrush}"
Kind="Add" />
</Button>
非常感谢(照常)!有用。 – Desomph