WPF属性---重复样式和触发器

WPF(Windows Presentation Foundation)是一种用于创建富客户端应用程序的技术,它提供了强大的样式和触发器功能来定制和美化应用程序的外观和行为。在 WPF 中,可以使用属性重复样式和触发器来简化界面元素的样式设置和响应。

属性重复样式(Property Trigger)是一种触发器,它使你可以在某个属性的特定值上设置样式。当元素的属性值满足触发器中定义的条件时,将应用触发器中定义的样式。属性重复样式的语法如下所示:

<Style.Triggers>
    <Trigger Property="PropertyName" Value="Value">
        <Setter Property="PropertyToSet" Value="NewValue"/>
    </Trigger>
</Style.Triggers>

其中,PropertyName 是要监视的属性名,Value 是要匹配的属性值,PropertyToSet 是要设置的属性名,NewValue 是要设置的新值。

举个例子,假设我们有一个按钮,当鼠标悬停在按钮上时,我们想改变按钮的背景颜色。可以使用属性重复样式来实现这个效果:

<Button Content="Hover Me">
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" Value="Yellow"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

 

在这个例子中,当按钮的 IsMouseOver 属性为 True 时(即鼠标悬停在按钮上),将应用触发器中定义的样式,即将按钮的背景颜色设置为黄色。

除了属性重复样式,WPF 还提供了事件触发器(Event Trigger),它可以在特定事件发生时触发样式的更改。事件触发器的语法如下所示:

 

<Style.Triggers>
    <EventTrigger RoutedEvent="EventName">
        <BeginStoryboard>
            <!-- 在事件发生时执行动画或其他操作 -->
        </BeginStoryboard>
    </EventTrigger>
</Style.Triggers>

其中,EventName 是要监视的事件名称,BeginStoryboard 标记用于指定在事件发生时要执行的操作,例如执行动画。

总结起来,WPF 的属性重复样式和触发器功能使开发人员能够简化界面元素的样式设置和响应。属性重复样式允许根据属性值的特定条件来设置样式,而事件触发器允许在特定事件发生时触发样式的更改。这些功能使得创建漂亮和交互式的用户界面变得更加简单和灵活。

 

 

重复样式

<StackPanel>

<Button FontSize="20" Foreground="Red" Content="hello" Width="100" Height="40"/>

<Button FontSize="20" Foreground="Red" Content="hello" Width="100" Height="40"/>

<Button FontSize="20" Foreground="Red" Content="hello" Width="100" Height="40"/>

</StackPanel>

通过以上的设置我们发现有很多重复的代码,在编写代码的时候,我们要避免代码的重复,代码的冗余,我们需要借助window资源,<window.Resources>

都要设置一个键值,通过键值找到样式X:key,例如:X:key=“defaultStyle”,通过defaultStyle找到样式

设置类型,TargetType。我们要为button设置样式,那么TargetType的类型就是button:TargetType=“button”。在接下来的设置中,我们就可以依据button的属性来设置

<Window.Resources>

<Style x:Key="defaultStyle" TargetType="Button"><!--TargetType要为谁设置样式-->

<Setter Property="FontSize" Value=" 30"/>

<Setter Property="Foreground" Value="blue"/>

<Setter Property="Width" Value="10"/>

</Style>

</Window.Resources>

<Grid>

<StackPanel>

按钮调用

<Button Style="{StaticResource defaultStyle}" Foreground="Red" Content="hello" Width="100" Height="40"/>

<Button FontSize="20" Foreground="Red" Content="hello" Width="100" Height="40"/>

<Button FontSize="20" Foreground="Red" Content="hello" Width="100" Height="40"/>

</StackPanel>

</Grid>

触发器

触发器就像开关一样,比如说一个按钮放上去的时候是什么样的拿下来又是什么样的

<Style.Triggers>

Trigger 为其中的一个触发器,还有其他样式

<Trigger Property="IsMouseOver" Value="True">

设置的各个属性

<Setter Property="Foreground" Value="Red"/>

<Setter Property="FontSize" Value="100"/>

</Trigger>

</Style.Triggers>

表现效果,当鼠标移动到按钮上会发生字体变为共色,字体为100

多条件触发器

<Style.Triggers>

<MultiTrigger><!--多条件触发器 当满足多个条件之后才触发的-->

<MultiTrigger.Conditions>

<!--两个条件同时满足--> 相当于这里是if语句

<Condition Property="IsMouseOver" Value="True"/>

<Condition Property=" IsFocused" Value="True"/>

</MultiTrigger.Conditions>

<!--满足以上两个条件执行什么-->就执行什么语句

<MultiTrigger.Setters>

<Setter Property="Foreground" Value="Red"/>

</MultiTrigger.Setters>

</MultiTrigger>

</Style.Triggers>

事件触发器

<EventTrigger RoutedEvent="Mouse.MouseEnter">

<EventTrigger.Actions>

<BeginStoryboard><!--动画效果-->

<Storyboard>

<DoubleAnimation Duration="0:0:0.2"

Storyboard.TargetProperty="FontSize" To="30">

</DoubleAnimation>

</Storyboard>

</BeginStoryboard>

</EventTrigger.Actions>

</EventTrigger>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
WPF 01-BootstrapperShell是一种用于启动和初始化WPF应用程序的框架。它是指示WPF应用程序在启动时应执行的代码的入口点。通常情况下,我们可以在App.xaml.cs文件中找到它。 BootstrapperShell提供了一种将应用程序的各个部分组织在一起的方式,以便在启动时执行特定的操作。这些操作可以包括设置应用程序的默认样式、添加全局资源、注册服务和创建主窗口等。通过将所有这些相关的代码集中到一个地方,我们可以更好地管控应用程序的启动过程。 通常情况下,BootstrapperShell会执行以下几个步骤: 1. 创建应用程序的主窗口:这个步骤通常在App.xaml.cs文件的OnStartup方法中完成。我们可以在这里创建一个MainWindow实例,并将其设置为应用程序的主窗口。 2. 设置应用程序的默认样式WPF应用程序通常使用样式来定义应用程序中各个控件的外观和行为。在BootstrapperShell中,我们可以通过添加资源字典来设置应用程序的默认样式。 3. 注册服务和初始化其他组件:在应用程序启动时,我们可能需要注册一些服务或初始化其他组件,以便在应用程序中的其他地方使用。在BootstrapperShell中,我们可以执行这些操作。 4. 处理未捕获的异常:在应用程序中可能会发生未捕获的异常,我们可以通过在BootstrapperShell中实现Application.DispatcherUnhandledException事件处理程序来捕获和处理这些异常。 总而言之,WPF 01-BootstrapperShell是一种用于组织和管理WPF应用程序启动过程的框架。它提供了一个入口点来集中所有与应用程序启动相关的代码和操作,从而更好地控制应用程序的行为和外观。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷艳爽faye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值