将 App.xaml 中创建的按钮添加到视图
Add button created in App.xaml to a view
所以也许我解决这个问题的方法是错误的,但它是这样的:
我使用 MahApps.Metro 框架的 Button,它已经设置了样式并作为内容
它收到一个图标。在我的项目中,我重复使用了这样的代码:
<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
到它,但我不知道如何在视图中使用它。我知道如何使用 "global" 样式和模板,但这已经是样式化和完成的控件模板,按钮之间唯一变化的是命令和偶尔的工具提示。
在 App.xaml
中创建一个带有 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>
所以也许我解决这个问题的方法是错误的,但它是这样的: 我使用 MahApps.Metro 框架的 Button,它已经设置了样式并作为内容 它收到一个图标。在我的项目中,我重复使用了这样的代码:
<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
到它,但我不知道如何在视图中使用它。我知道如何使用 "global" 样式和模板,但这已经是样式化和完成的控件模板,按钮之间唯一变化的是命令和偶尔的工具提示。
在 App.xaml
中创建一个带有 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>