【问题标题】:Add button created in App.xaml to a view将在 App.xaml 中创建的按钮添加到视图
【发布时间】:2017-09-25 09:59:53
【问题描述】:

所以也许我解决这个问题的方法是错误的,但它是这样的: 我使用了一个 MahApps.Metro 框架的按钮,它已经被样式化并作为内容 它收到一个图标。在我的项目中,我反复使用过这样的代码:

<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 到它,但我不知道如何在视图中使用它。我知道如何使用“全局”样式和模板,但这已经是样式化和完成的控件模板,按钮之间唯一变化的是命令和偶尔的工具提示。

【问题讨论】:

    标签: wpf xaml mahapps.metro app.xaml


    【解决方案1】:

    App.xaml 中创建带有x:KeyStyle,您可以在其中使用setter 定义所有默认属性值:

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

    【讨论】:

      猜你喜欢
      • 2016-10-17
      • 1970-01-01
      • 2013-03-04
      • 1970-01-01
      • 2012-12-07
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2011-09-13
      相关资源
      最近更新 更多