Skip to content

Toast zh CN

末城via edited this page Jun 21, 2023 · 2 revisions

Toast 弹出消息

返回目录

适用于:   v1.1.12 或更新的版本

概述

类名:    Toast
命名空间:    Panuon.WPF.UI
位于:    SharedResources/Panuon.WPF.UI/Helpers/Toast.cs
静态类

提供一系列属性和方法, 用于在 WindowX 窗体X 上显示弹出消息。
Toast 弹出消息 不依赖任何 Panuon.WPF.UI 中的资源字典,即使不引用 Control.xaml ,也可使用 Toast 弹出消息 或自定义它的样式。

滚动至示例


备注

属性间的相互作用

该类型没有此内容。

自定义样式提示

该类型没有此内容。


方法

Show

该方法带有多个重载,请根据实际需要,选择合适的重载方法。
全部参数:    WindowX window, string message, ToastPosition position, double offset, int durationMs, ToastSetting setting, ToastWindow targetWindow
返回值:    Panuon.WPF.UI.IPendingHandler 显示一个弹出消息。
window: 指定要弹出消息的 WindowX 窗体X 。如果此参数为空,弹出消息会使用 targetWindow 参数的值来寻找承载消息的窗体容器。但是,如果没有通过 targetWindow 参数找到对应的窗体,或目标窗体不是 WindowX 窗体X 类型,将会引发异常。
message: 要显示的消息。
position: 要显示的消息位置,相对于窗体。
offset: 消息的坐标位置偏移量,相对于窗体边缘。
durationMs: 消息的持续时间,单位为毫秒。
setting: 弹出消息的属性设定。如果此参数不为空,将不再使用 ToastSettings.Setting 属性中的值。
targetWindow: 弹出消息自适应寻找窗体的逻辑。MainWindow 表示将在当前 Application.Current.MainWindow 窗体上弹出消息。ActiveWindow 表示将在当前 Application.Current.Windows 中寻找 IsActive=True 的窗体。注意,如果没有找到对应的窗体,或目标窗体不是 WindowX 窗体X 类型,将会引发异常。


ToastSetting 中的属性

LabelStyle

类型:    System.Windows.Style
默认值:    [见资源键[LabelStyle](#LabelStyle)]
获取或设置取消 Button 按钮 控件的样式。

DefaultPosition

类型:    Panuon.WPF.UI.ToastPosition
默认值:    [Bottom] / Left / Top / Right / Center
获取或设置默认弹出消息的位置。

Spacing

类型:    System.Double
默认值:    20
获取或设置距离窗体边缘的默认间距。

AnimationEase

类型:    Panuon.WPF.UI.AnimationEase
默认值:    [None] / BackIn / BackOut / BackInOut_ ...
获取或设置消息弹出动画使用的缓动函数。有关WPF缓动函数的更多信息,请查阅 EasingFunction 相关的文档。

AnimationDuration

类型:    System.Duration
默认值:    0:0:0.5 ...
获取或设置消息弹出动画的持续时间。


公开的资源键

有关如何使用资源键的更多内容, 请查看命名与约定-资源键
一些无法从外部访问的属性已被隐去。

LabelStyleKey

资源键:    {ComponentResourceKey ResourceId=LabelStyleKey, TypeInTargetAssembly={x:Type pu:Toast}}
缩略资源键:    {pu:Toast.LabelStyleKey}

弹出消息标签的样式。

<Style x:Key="{ComponentResourceKey ResourceId=LabelStyleKey, TypeInTargetAssembly={x:Type local:Toast}}"
       TargetType="Label"
       BasedOn="{StaticResource {x:Static rs:StyleKeys.LabelStyle}}">
    <Setter Property="local:IconHelper.FontFamily" Value="{Binding IconFontFamily, Source={x:Static local:GlobalSettings.Setting}}" />
    <Setter Property="local:IconHelper.FontSize" Value="{Binding IconFontSize, Source={x:Static local:GlobalSettings.Setting}}" />
    <Setter Property="local:ShadowHelper.BlurRadius" Value="25" />
    <Setter Property="FontFamily" Value="{Binding FontFamily, Source={x:Static local:GlobalSettings.Setting}}" />
    <Setter Property="FontSize" Value="{Binding FontSize, Source={x:Static local:GlobalSettings.Setting}}" />
    <Setter Property="MaxWidth" Value="350" />
    <Setter Property="VerticalContentAlignment" Value="Stretch" />
    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    <Setter Property="Padding" Value="15,7" />
    <Setter Property="Background" Value="Black" />
    <Setter Property="Foreground" Value="White" />
    <Setter Property="local:LabelHelper.CornerRadius" Value="2" />
    <Setter Property="local:LabelHelper.ShadowColor" Value="Gray" />
</Style>

示例

示例1

using Panuon.WPF.UI;
···

Toast.Show(window, "This is a toast message.");

//或者在WindowX中调用
Toast("This is a toast message.");

示例2

将以下定义放置在 App.xaml 中的 ResourceDictionary 中(或其他资源字典文件中,但要确保在 App.xaml 中引用,或通过 cs代码 装填到 Application.Current.Resources.MergedDictionaries 中)。如果不清楚如何放置,请下载源代码并查看 Samples 项目。

xmlns:pu="https://opensource.panuon.com/wpf-ui"
xmlns:puconfig="clr-namespace:Panuon.WPF.UI.Configurations;assembly=Panuon.WPF.UI"
···

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:pu="https://opensource.panuon.com/wpf-ui">
    <!--注意,出于某种未知的原因,无论是否在App.xaml中直接定义,都需要在根资源字典中再嵌套一层资源字典。-->
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary>
            <!--x:Key的值是任意的,没有特殊要求-->
            <pu:ToastSettings x:Key="toastSetting" Spacing="25">
                <pu:ToastSettings.LabelStyle>
                    <Style TargetType="Label" BasedOn="{StaticResource {x:Static pu:Toast.LabelStyleKey}}">
                        <Setter Property="Background" Value="#80BEE8" />
                        <Setter Property="Foreground" Value="#FFFFFF" />
                        <Setter Property="pu:LabelHelper.CornerRadius" Value="15" />
                        <Setter Property="pu:LabelHelper.ShadowColor" Value="#80BEE8" />
                        <Setter Property="pu:ShadowHelper.Opacity" Value="0.5" />
                    </Style>
                </pu:ToastSettings.LabelStyle>
            </pu:ToastSettings>
        </ResourceDictionary>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
using Panuon.WPF.UI;
···

Toast.Show(window, "This is a toast message.");

//或者在WindowX中调用
Toast("This is a toast message.");