|
[源码下载]
重新想象 Windows 8 Store Apps (4) - 控件之提示控件: ProgressRing; 范围控件: ProgressBar, Slider
作者:webabcd
介绍
重新想象 Windows 8 Store Apps 之提示控件
重新想象 Windows 8 Store Apps 之范围控件
- ProgressBar - 进度条控件
- Slider - 滑动条控件
示例
1、ProgressRing 的 Demo
ProgressRingDemo.xaml
2、ProgressBar 的 Demo
ProgressBarDemo.xaml
3、Slider 的 Demo
SliderDemo.xaml
SliderDemo.xaml.cs
/*
* Slider - 滑动条控件
* Thumb - 可由用户拖动的控件(Slider 内的可拖动部分就是一个 Thumb 控件)
*/
using System;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Data;
namespace XamlDemo.Controls
{
public sealed partial class SliderDemo : Page
{
public SliderDemo()
{
this.InitializeComponent();
}
}
// 为 Slider 的 ThumbToolTipValueConverter 提供 Converter
public sealed class MyThumbToolTipValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
// 在 Slider 的值后面加一个百分号
return value + "%";
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
return null;
}
}
}
4、自定义 Slider 使其具有圆角效果
MyControls/MySlider.cs
/*
* 改变 Slider 的样式,使其具有圆角效果,类似 ios 的滑动条
*/
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Shapes;
namespace MyControls
{
public class MySlider : Slider
{
// 原 loaded 背景(Slider 中已加载部分的背景)
private Rectangle _loadedBackground;
// 由于用原 loaded 背景实现圆角有一些问题,所以新增了一个 Rectangle 来辅助
private Rectangle _loadedBackgroundCustom;
private Thumb _thumb;
public MySlider() : base()
{
this.DefaultStyleKey = typeof(MySlider);
}
protected override void OnValueChanged(double oldValue, double newValue)
{
base.OnValueChanged(oldValue, newValue);
_loadedBackgroundCustom.HorizontalAlignment = Windows.UI.Xaml.HorizontalAlignment.Left;
// loaded 背景的宽度为原 loaded 背景的宽度加上 thumb 宽度的二分之一
_loadedBackgroundCustom.Width = _loadedBackground.Width + _thumb.Width / 2;
}
protected override void OnApplyTemplate()
{
base.OnApplyTemplate();
_loadedBackground = GetTemplateChild("HorizontalDecreaseRect") as Rectangle;
_loadedBackgroundCustom = GetTemplateChild("HorizontalBorderCustom") as Rectangle;
_thumb = GetTemplateChild("HorizontalThumb") as Thumb;
}
}
}
MyControls/themes/MySlider.xaml
OK
[源码下载] |
|
|