• 【Windows Phone 8】五角星评价控件


    【效果】

    【思路】

    利用Path绘制五角星,根据Tap事件填充,获取评分

    【前台】

    <UserControl x:Class="评分控件.StarsControl"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        FontFamily="{StaticResource PhoneFontFamilyNormal}"
        FontSize="{StaticResource PhoneFontSizeNormal}"
        Foreground="{StaticResource PhoneForegroundBrush}"
        d:DesignHeight="480" d:DesignWidth="480" Loaded="UserControl_Loaded_1">
    
        <Grid Background="#EFEFEF">
            <StackPanel x:Name="LayoutRoot" Orientation="Horizontal">
                <StackPanel Width="40" Height="32" Margin="0,0" Background="#00000000">
                    <Path Data="M16,0 L19.77688,12.223213 L32.000001,12.222913 L22.111121,19.776973 L25.888544,32.000001 L16,24.445454 L6.1114563,32.000001 L9.88888,19.776973 L2.2971745E-08,12.222913 L12.22312,12.223213 z"
                                  HorizontalAlignment="Center" Height="32"  Width="32"
                                  Stretch="Fill" VerticalAlignment="Center" Stroke="#EF8200"/>
                </StackPanel>
                <StackPanel Width="40" Height="32" Margin="0,0" Background="#00000000">
                    <Path Data="M16,0 L19.77688,12.223213 L32.000001,12.222913 L22.111121,19.776973 L25.888544,32.000001 L16,24.445454 L6.1114563,32.000001 L9.88888,19.776973 L2.2971745E-08,12.222913 L12.22312,12.223213 z"
                                  HorizontalAlignment="Center" Height="32"  Width="32"
                                  Stretch="Fill" VerticalAlignment="Center" Stroke="#EF8200"/>
                </StackPanel>
                <StackPanel Width="40" Height="32" Margin="0,0" Background="#00000000">
                    <Path Data="M16,0 L19.77688,12.223213 L32.000001,12.222913 L22.111121,19.776973 L25.888544,32.000001 L16,24.445454 L6.1114563,32.000001 L9.88888,19.776973 L2.2971745E-08,12.222913 L12.22312,12.223213 z"
                                  HorizontalAlignment="Center" Height="32"  Width="32"
                                  Stretch="Fill" VerticalAlignment="Center" Stroke="#EF8200"/>
                </StackPanel>
                <StackPanel Width="40" Height="32" Margin="0,0" Background="#00000000">
                    <Path Data="M16,0 L19.77688,12.223213 L32.000001,12.222913 L22.111121,19.776973 L25.888544,32.000001 L16,24.445454 L6.1114563,32.000001 L9.88888,19.776973 L2.2971745E-08,12.222913 L12.22312,12.223213 z"
                                  HorizontalAlignment="Center" Height="32"  Width="32"
                                  Stretch="Fill" VerticalAlignment="Center" Stroke="#EF8200"/>
                </StackPanel>
                <StackPanel Width="40" Height="32" Margin="0,0" Background="#00000000">
                    <Path Data="M16,0 L19.77688,12.223213 L32.000001,12.222913 L22.111121,19.776973 L25.888544,32.000001 L16,24.445454 L6.1114563,32.000001 L9.88888,19.776973 L2.2971745E-08,12.222913 L12.22312,12.223213 z"
                                  HorizontalAlignment="Center" Height="32" Width="32"
                                  Stretch="Fill" VerticalAlignment="Center" Stroke="#EF8200"/>
                </StackPanel>
            </StackPanel>
        </Grid>
    </UserControl>

    【后台】

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Navigation;
    using Microsoft.Phone.Controls;
    using Microsoft.Phone.Shell;
    using System.Windows.Shapes;
    using System.Windows.Media;
    
    namespace 评分控件
    {
        public partial class StarsControl : UserControl
        {
            #region Variables
    
            private List<StackPanel> stackPanels = new List<StackPanel>();
    
            #endregion
    
            #region Properties
    
            public int Value
            {
                get { return (int)GetValue(ValueProperty); }
                set { SetValue(ValueProperty, value); }
            }
    
            public static readonly DependencyProperty ValueProperty =
                DependencyProperty.Register("Value", typeof(int), typeof(StarsControl), new PropertyMetadata(0));
            #endregion
    
            #region Methods
            public StarsControl()
            {
                InitializeComponent();
            }
    
            private void UserControl_Loaded_1(object sender, RoutedEventArgs e)
            {
                IEnumerable<UIElement> stars = this.LayoutRoot.Children;
    
                foreach (var item in stars)
                {
                    if (item.GetType() == typeof(StackPanel))
                    {
                        stackPanels.Add((StackPanel)item);
    
                        item.Tap += item_Tap;
                    }
                }
            }
    
            void item_Tap(object sender, System.Windows.Input.GestureEventArgs e)
            {
                for (int i = 0; i < stackPanels.Count; i++)
                {
                    if (sender.Equals(stackPanels[i]))
                    {
                        Value = i + 1;
                        FillStar(Value);
                    }
                }
            }
    
            private void FillStar(int value)
            {
                for (int i = 0; i < stackPanels.Count; i++)
                {
                    Path path = stackPanels[i].Children[0] as Path;
                    path.Fill = new SolidColorBrush(System.Windows.Media.Color.FromArgb(0, 0, 0, 0));
                }
                for (int i = 0; i < value; i++)
                {
                    Path path = stackPanels[i].Children[0] as Path;
                    path.Fill = new SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 239, 130, 0));
                }
            }
            #endregion
        }
    }
  • 相关阅读:
    用JavaScript实现的将GB2312转换为UTF8编码
    一行内文本超出指定宽度溢出的处理
    JavaScript delete
    深入学习Enterprise Library for .NET Framework 2.0的Cache机制——分析篇
    CSS兼容技巧
    IE6,IE7,FF兼容CSS的差别及解决办法
    JavaScript获取当前文件全路径、当前目录、当前文件名
    DIV+CSS相对IE6 IE7和IE8兼容问题整理
    ie8兼容ie7css的方法和minheight的兼容问题
    Atitit.得到网络邻居列表java php c#.net python
  • 原文地址:https://www.cnblogs.com/fb-boy/p/3418219.html
Copyright © 2020-2023  润新知