【问题标题】:WPF Button XAML TemplateWPF 按钮 XAML 模板
【发布时间】:2017-06-20 06:25:07
【问题描述】:

我为我的按钮使用模板。现在我想在运行时更改模板。但这不适用于此模板。 模板如下所示:

<Application.Resources>
    <Style TargetType="{x:Type Button}">
        <Setter Property="OverridesDefaultStyle" Value="true"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Border Name="Border" Background="Transparent">
                        <ContentPresenter RecognizesAccessKey="True"/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsKeyboardFocused" Value="true">
                            <Setter TargetName="Border" Property="BorderBrush" Value="#ffffff" />
                        </Trigger>
                        <Trigger Property="IsDefaulted" Value="true">
                            <Setter TargetName="Border" Property="BorderBrush" Value="#ffffff" />
                        </Trigger>
                        <Trigger Property="IsMouseOver" Value="true">
                            <Setter TargetName="Border" Property="Background" Value="Transparent" />
                        </Trigger>
                        <Trigger Property="IsPressed" Value="true">
                            <Setter TargetName="Border" Property="Background" Value="Transparent" />
                            <Setter TargetName="Border" Property="BorderBrush" Value="#ffffff" />
                        </Trigger>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter TargetName="Border" Property="Background" Value="Transparent" />
                            <Setter TargetName="Border" Property="BorderBrush" Value="#ffffff" />
                            <Setter Property="Foreground" Value="Transparent"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Application.Resources>

我在不同的窗口上使用它,因此作为应用程序资源。 如何访问此模板并仅针对某些按钮进行更改? 我考虑过创建不同的模板。但是如何创建一个可以在运行时更改背景等内容的设备?

【问题讨论】:

  • 怎么没用?你尝试了什么?
  • 为基本样式添加键属性,在按钮样式中使用该键。类似stackoverflow.com/a/19366835/2745294
  • 那个基于的真的很有趣。我试试看,谢谢。
  • 您是否会在 DataTemplate 中使用您的 Button
  • 否......

标签: c# wpf xaml templates


【解决方案1】:

如果你给你的资源一个 x:key,你应该可以做这样的事情:

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/MyProject.Styles;component/ButtonStyles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>

然后只需使用:

<Button>
<Button.Style>
    <Style BasedOn="{StaticResource StyleFromButtonStyles}" TargetType="Button">

并用 Style.Setter 覆盖您要更改的属性

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-08
    • 2015-11-10
    • 1970-01-01
    • 2018-11-01
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多