2017-09-25 85 views
0

所以也許我對這個問題的方法是錯誤的,但在這裏: 我使用了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> 

This is what it looks like

這是按鈕的外觀。 (一個啓用,兩個禁用)

正如你所看到的,這是很多代碼在許多視圖項目中重複使用。所以我想過把它添加到App.xaml並通過改變視圖中的命令(和邊距)來重用它們。
但我不知道如何做到這一點。我試着添加完整的按鈕代碼,然後只是添加x:Key,但我不知道如何在視圖中使用它。我知道如何使用「全局」樣式和模板,但是這已經被設計和完成了控制模板,並且按鈕之間唯一改變的是命令和偶爾的工具提示。

回答

3

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> 
+0

非常感謝(照常)!有用。 – Desomph

相關問題