рд╡рд┐рди 8 / рдЖрд░рдЯреА рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░реЗрд╕рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЗрдореЗрдЬрдХрдВрдЯреНрд░реЛрд▓

рдХреНрдпреЛрдВ?


рдХрд┐рд╕реА рднреА рд╡рд┐рдВрдбреЛрдЬ 8 / рдЖрд░рдЯреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рдЖрдкрдХреЛ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╣рд░ рдЬрдЧрд╣ рд╕реНрдХреВрдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рд╕реАрдзреЗ рд╡реЗрдм рд╕реЗ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рдлрд╛рдЗрд▓реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ; рдПрдХ рдмрд╛рд░ IsolatedStorage рдФрд░ рдЗрддрдиреЗ рдкрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХреАред рдпрд╣ рд╕рдм рддрдм рддрдХ рдареАрдХ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕ рдЧреНрд░рд╛рдлрд┐рдХ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд▓рдВрдмрд╛ рд╕рдордп рд▓рдЧрдиреЗ рд▓рдЧреЗ (рдПрдХ рд╕реЗрдХрдВрдб рднреА рдмрд╣реБрдд)ред рдЗрд╕ рд╕рдордп, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ "рдЖрд╢реНрд╡рд╕реНрдд" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдПрдХ рдЦрд╛рд▓реА рдЬрдЧрд╣ рд▓реЗрдВ, рдЬрд┐рд╕ рдкрд░ рдПрдХ рдЫрд╡рд┐ рддреБрд░рдВрдд рджрд┐рдЦрд╛рдИ рджреЗрдЧреАред рдпрд╣рд╛рдВ ProgressRing рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрддреА рд╣реИ рдФрд░, рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдПрдХ рдмрд╛рд░ рдирд┐рдпрдВрддреНрд░рдг рд▓рд┐рдЦрдирд╛ рдФрд░ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓рдирд╛ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред


рд╡рд┐рдЪрд╛рд░


рдпрд╣ рд╡рд┐рдЪрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ: Border , Image , ProgressRing - рд╣рдореЗрдВ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред


рдХрд╛рд░реНрдп рд╕рд┐рджреНрдзрд╛рдВрдд


рд╕рд┐рд░реНрдл ProgressRing рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИрдВ: ImageOpened event ( ImageOpened ProgressRing ) рдФрд░ рдирдП ImageSource рдХреЗ рдЧрдВрддрд╡реНрдп ( ProgressRing рджрд┐рдЦрд╛рдПрдВ)ред

рдХреЛрдб


ProgressImage.xaml

 <UserControl x:Class="test.Controls.ProgressImage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:test.Controls" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> <Border x:Name="Border" BorderThickness="1" > <Grid> <ProgressRing x:Name="Ring" Width="100" Height="100" IsActive="True" Foreground="#FF6D31F5" /> <Image x:Name="Image" Margin="0" ImageOpened="Image_OnImageOpened" /> </Grid> </Border> </UserControl> 


ProgressImage.cs

  public sealed partial class ProgressImage : UserControl { #region Common public ProgressImage() { InitializeComponent(); } private void Image_OnImageOpened(object sender, RoutedEventArgs e) { Ring.Opacity = 0; } #endregion #region Dependency private static readonly Color DefRingColor = Colors.BlueViolet; private static readonly Color DefBorderColor = Colors.White; private static readonly ImageSource DefSource = null; private const Stretch DefStretch = Stretch.None; /// <summary> /// Set Image Source /// </summary> public ImageSource Source { get { return (ImageSource)GetValue(SourceProperty); } set { SetValue(SourceProperty, value); } } public static readonly DependencyProperty SourceProperty = DependencyProperty.Register("Source", typeof(ImageSource), typeof(ProgressImage), new PropertyMetadata(DefSource,SourceChanged)); private static void SourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var controll = (ProgressImage)d; var val = (ImageSource)e.NewValue; controll.Image.Source = val; controll.Ring.Opacity = 100; } /// <summary> /// Set ProgressRing Size /// </summary> public int ProgressRingSize { get { return (int)GetValue(ProgressRingSizeProperty); } set { SetValue(ProgressRingSizeProperty, value); } } public static readonly DependencyProperty ProgressRingSizeProperty = DependencyProperty.Register("ProgressRingSize", typeof(int), typeof(ProgressImage), new PropertyMetadata(55, ProgressRingSizeChanged)); private static void ProgressRingSizeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var controll = (ProgressImage)d; var val = (int)e.NewValue; controll.Ring.Width = val; controll.Ring.Height = val; } /// <summary> /// Set ProgressRing Color /// </summary> public Color ProgressRingColor { get { return (Color)GetValue(ProgressRingcolorProperty); } set { SetValue(ProgressRingcolorProperty, value); } } public static readonly DependencyProperty ProgressRingcolorProperty = DependencyProperty.Register("ProgressRingColor", typeof(Color), typeof(ProgressImage), new PropertyMetadata(DefRingColor, ProgressRingColorChanged)); private static void ProgressRingColorChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var controll = (ProgressImage)d; var val = (Color)e.NewValue; controll.Ring.Foreground = new SolidColorBrush(val); } /// <summary> /// Set Border Color /// </summary> public Color BorderColor { get { return (Color)GetValue(BorderColorProperty); } set { SetValue(BorderColorProperty, value); } } public static readonly DependencyProperty BorderColorProperty = DependencyProperty.Register("BorderColor", typeof(Color), typeof(ProgressImage), new PropertyMetadata(DefBorderColor, BorderColorChanged)); private static void BorderColorChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var controll = (ProgressImage)d; var val = (Color)e.NewValue; controll.Border.BorderBrush = new SolidColorBrush(val); } /// <summary> /// Set BorderThickness /// </summary> public double BorderSize { get { return (double)GetValue(BorderSizeProperty); } set { SetValue(BorderSizeProperty, value); } } public static readonly DependencyProperty BorderSizeProperty = DependencyProperty.Register("BorderSize", typeof(double), typeof(ProgressImage), new PropertyMetadata(0.0, BorderSizeChanged)); private static void BorderSizeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var controll = (ProgressImage)d; var val = (double)e.NewValue; controll.Border.BorderThickness = new Thickness(val); } /// <summary> /// Set Border Corner Radius /// </summary> public int BorderCornerRadius { get { return (int)GetValue(BorderCornerRadiusProperty); } set { SetValue(BorderCornerRadiusProperty, value); } } public static readonly DependencyProperty BorderCornerRadiusProperty = DependencyProperty.Register("BorderCornerRadius", typeof(int), typeof(ProgressImage), new PropertyMetadata(0, BorderCornerRadiusChanged)); private static void BorderCornerRadiusChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var controll = (ProgressImage)d; var val = (int)e.NewValue; controll.Border.CornerRadius = new CornerRadius(val); } /// <summary> /// Set Image Stretch /// </summary> public Stretch ImageStretch { get { return (Stretch)GetValue(ImageStretchProperty); } set { SetValue(ImageStretchProperty, value); } } public static readonly DependencyProperty ImageStretchProperty = DependencyProperty.Register("ImageStretch", typeof(Stretch), typeof(ProgressImage), new PropertyMetadata(DefStretch, ImageStretchChanged)); private static void ImageStretchChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var controll = (ProgressImage)d; var val = (Stretch)e.NewValue; controll.Image.Stretch = val; } /// <summary> /// Set Image Stretch /// </summary> public double ImageMargin { get { return (double)GetValue(ImageMarginProperty); } set { SetValue(ImageMarginProperty, value); } } public static readonly DependencyProperty ImageMarginProperty = DependencyProperty.Register("ImageMargin", typeof(double), typeof(ProgressImage), new PropertyMetadata(0.0, ImageMarginChanged)); private static void ImageMarginChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var controll = (ProgressImage)d; var val = (double)e.NewValue; controll.Image.Margin = new Thickness(val); } #endregion } 


рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рд╕реВрдЪреА рдореЗрдВ (рдмрд╛рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдирд╛рдо, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╕рдордЭрд╛рдиреЗ рд▓рд╛рдпрдХ) рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:


рдЙрдкрдпреЛрдЧ рдЕрддреНрдпрдВрдд рд╕рд░рд▓ рд╣реИред

рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛:
 xmlns:controls="using:test.Controls" 

рдФрд░ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди:
 <controls:ProgressImage x:Name="ProgressImage" Grid.Column="1" Margin="0,0,20,0" Width="300" Height="300" BorderSize="3" BorderColor="White" ProgressRingColor="Red" ImageStretch="None" ProgressRingSize="60" HorizontalAlignment="Right" VerticalAlignment="Center"/> 


рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ?


рд╣рд╛рде рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ - рдЖрдкрдХреЛ рдЕрдкрдиреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдХреНрд╖рдг рдЗрд╕реЗ рдЯреНрд╡рд┐рдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдмреБрдирд┐рдпрд╛рджреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рдирдП рд▓реЛрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рджреЛ рдорд┐рдирдЯ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред рдореБрдЭреЗ рдкреВрд░реА рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдиреЗ рд╕рдордп рдмрдЪрд╛рдпрд╛ред рдФрд░ рдпрд╣рд╛рдБ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред


рдЙрджреНрджреЗрд╢реНрдп / рдкрдХреНрд╖рдкрд╛рддреА рдЖрд▓реЛрдЪрдирд╛, рд╕рд╛рде рд╣реА рдмреВрдЯ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕реБрдЭрд╛рд╡, рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/In180067/


All Articles