WPF - 加载页面(刷新页面)

直接甩代码!
  <Style TargetType="{x:Type local:ShapeRefresh}">
        <Setter Property="Width" Value="16"/>
        <Setter Property="Height" Value="16"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:ShapeRefresh}">
                    <Grid>
                        <Viewbox>
                            <Grid Height="16" Width="16">
                                <Grid >
                                    <Path Data="M 3,12 A 6,6 0 0 1 8,3" Fill="Transparent"  Stroke="{TemplateBinding Foreground}" StrokeThickness="1"/>
                                    <Path Data="M 8,0 L 11,3 L 8,6 Z" Fill="{TemplateBinding Foreground}"/>
                                </Grid>
                                <Grid RenderTransformOrigin="0.5,0.5" >
                                    <Grid.RenderTransform>
                                        <RotateTransform Angle="180"/>
                                    </Grid.RenderTransform>
                                    <Path Data="M 3,12 A 6,6 0 0 1 8,3" Fill="Transparent"  Stroke="{TemplateBinding Foreground}" StrokeThickness="1"/>
                                    <Path Data="M 8,0 L 11,3 L 8,6 Z" Fill="{TemplateBinding Foreground}"/>
                                </Grid>
                            </Grid>
                        </Viewbox>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
 public class ShapeRefresh : Control
    {
        static ShapeRefresh()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(ShapeRefresh), new FrameworkPropertyMetadata(typeof(ShapeRefresh)));
        }
    }

<UserControl x:Class="SoftRGB.CP.App.UC.RefreshPart"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:SoftRGB.CP.App.UC"
             xmlns:RGBCtrl="clr-namespace:SoftRGB.Controls;assembly=SoftRGB.Controls"
              Cursor="Hand" >
    <UserControl.Triggers>
        <EventTrigger RoutedEvent="MouseEnter" >
            <EventTrigger.Actions>
                <BeginStoryboard>
                    <Storyboard>
                        <ColorAnimation   Duration="0:0:0.2"  Storyboard.TargetName="ShapeRefresh_Main"  Storyboard.TargetProperty="Foreground.(SolidColorBrush.Color)" To="#ff9c9b9b"  />
                        <ColorAnimation   Duration="0:0:0.2"  Storyboard.TargetName="TextBlock_Main"  Storyboard.TargetProperty="Foreground.(SolidColorBrush.Color)" To="#ff9c9b9b"  />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger.Actions>
        </EventTrigger>
        <EventTrigger RoutedEvent="MouseLeave" >
            <EventTrigger.Actions>
                <BeginStoryboard>
                    <Storyboard>
                        <ColorAnimation   Duration="0:0:0.2"  Storyboard.TargetName="ShapeRefresh_Main"  Storyboard.TargetProperty="Foreground.(SolidColorBrush.Color)" To="#ffb9b6b6"  />
                        <ColorAnimation   Duration="0:0:0.2"  Storyboard.TargetName="TextBlock_Main"  Storyboard.TargetProperty="Foreground.(SolidColorBrush.Color)" To="#ffb9b6b6"  />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger.Actions>
        </EventTrigger>
    </UserControl.Triggers>
    <Grid Background="Transparent">
        <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
            <Viewbox Width="50" Height="50">
                <RGBCtrl:ShapeRefresh x:Name="ShapeRefresh_Main" Foreground="#ffb9b6b6"/>
            </Viewbox>
            <TextBlock x:Name="TextBlock_Main" Text="点击重新加载" Foreground="#ffb9b6b6" Margin="0,10,0,0"/>
        </StackPanel>
    </Grid>
</UserControl>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace SoftRGB.CP.App.UC
{
    /// <summary>
    /// RefreshPart.xaml 的交互逻辑
    /// </summary>
    public partial class RefreshPart : UserControl
    {
        public RefreshPart()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 加载刷新组件
        /// </summary>
        /// <param name="container">加载刷新组件的容器</param>
        /// <param name="refreshCallback">点击刷新时的回调</param>
        public static void LoadRefreshPart(Panel container, Action refreshCallback)
        {
            RefreshPart part = new RefreshPart();
            container.Children.Add(part);
            part.MouseLeftButtonUp += (s, e) =>
            {
                container.Children.Remove(part);
                if (refreshCallback != null)
                    refreshCallback.Invoke();
            };
        }
    }
}


使用:RefreshPart.LoadRefreshPart(Grid_Root, action); 其中Grid_Root为要刷新的容器,action为执行的方法。。。

猜你喜欢

转载自blog.csdn.net/qq_23018459/article/details/80310366
今日推荐