2017-09-25 4 views
0

この問題に対する私のアプローチは間違っていますが、ここにはあります: 私は既にスタイルのついたButton of 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

これは、ボタンがどのように見えるかです。 (1つは有効、2つは無効)

あなたが見るように、プロジェクトでは多くのビューを繰り返し使用するために多くのコードがあります。だから私はApp.xamlにそれを追加し、ビュー内のコマンド(とマージン)を変更して再利用することを考えました。
しかし、私はこれを行う方法がわかりません。私はあなたがそれを参照して、それだけでx:Keyを追加するボタンのコード全体を追加しようとしましたが、私はどのようにビューでそれを使用するか分からない。私は "グローバルな"スタイルとテンプレートの使い方を知っていますが、これはすでにスタイルが設定されたコントロールテンプレートであり、ボタン間で変更される唯一のことはコマンドとときどきツールチップです。

答えて

3

あなたがセッターを使用して、すべてのデフォルトのプロパティ値を定義App.xamlx:KeyStyleを作成します。

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

あなたはその後、任意のButton要素にStyleを適用し、必要なすべてのプロパティ上書きすることができます:

<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

関連する問題