Button, HyperlinkButton, RepeatButton
介紹
重新想象 Windows 8 Store Apps 之按鈕控件
Button - 按鈕控件
HyperlinkButton - 超鏈按鈕
RepeatButton - 按住後會重復執行單擊操作的按鈕
ToggleButton - 可切換狀態的按鈕
RadioButton - 單選框控件
CheckBox - 復選框控件
ToggleSwitch - 狀態切換控件
示例
1、Button 的 Demo
ButtonDemo.xaml.cs
/*
* Button - 按鈕控件
*/
using System;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
namespace XamlDemo.Controls
{
public sealed partial class ButtonDemo : Page
{
public ButtonDemo()
{
this.InitializeComponent();
}
protected override void OnNavigatedTo
(NavigationEventArgs e)
{
/*
* Button - 按鈕控件,其全部功能是通過其基類 ButtonBase 提供的
* ClickMode - 引發 Click 事件的模式:ClickMode.Release(默認值),
ClickMode.Press, ClickMode.Hover
* IsPointerOver - 設備指針(鼠標或手指等)是否在按鈕上
* IsPressed - 當前按鈕是否處於按下的狀態
* Command 和 CommandParameter 等寫到 MVVM 的時候再詳細寫
*/
Button btn = new Button();
btn.Content = "我是按鈕";
btn.ClickMode = ClickMode.Hover;
btn.Click += btn_Click;
root.Children.Add(btn);
}
async void btn_Click(object sender,
RoutedEventArgs e)
{
await new MessageDialog("觸發了按鈕的
Click 事件").ShowAsync();
}
}
}
2、HyperlinkButton 的 Demo
HyperlinkButtonDemo.xaml
<Page
x:Class="XamlDemo.Controls.HyperlinkButtonDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="Transparent">
<StackPanel Margin="120 0 0 0">
<!--
HyperlinkButton - 帶超鏈接的按鈕
NavigateUri - 按鈕要導航到的 Uri
-->
<HyperlinkButton Name="btnLink" Content="webabcd blog" FontSize="36" Foreground="Blue" NavigateUri="http://webabcd.cnblogs.com" />
</StackPanel>
</Grid>
</Page>
HyperlinkButtonDemo.xaml.cs
/*
* HyperlinkButton - 超鏈按鈕
*/
using Windows.UI.Xaml.Controls;
namespace XamlDemo.Controls
{
public sealed partial class HyperlinkButtonDemo : Page
{
public HyperlinkButtonDemo()
{
this.InitializeComponent();
this.Loaded += HyperlinkButtonDemo_Loaded;
}
void HyperlinkButtonDemo_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs
e)
{
// 為 HyperlinkButton 加上鼠標移入變手型的功能
btnLink.PointerEntered += btnLink_PointerEntered;
btnLink.PointerExited += btnLink_PointerExited;
}
void btnLink_PointerEntered(object sender,
Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
{
// 鼠標移入 HyperlinkButton 變手型
Windows.UI.Core.CoreWindow.GetForCurrentThread().PointerCursor = new
Windows.UI.Core.CoreCursor(Windows.UI.Core.CoreCursorType.Hand, 1);
}
void btnLink_PointerExited(object sender,
Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
{
// 鼠標移出 HyperlinkButton 變箭頭
Windows.UI.Core.CoreWindow.GetForCurrentThread().PointerCursor = new
Windows.UI.Core.CoreCursor(Windows.UI.Core.CoreCursorType.Arrow, 1);
}
}
}
3、RepeatButton 的 Demo
RepeatButtonDemo.xaml
<Page
x:Class="XamlDemo.Controls.RepeatButtonDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="Transparent">
<StackPanel Margin="120 0 0 0">
<TextBlock Name="lblMsg" TextWrapping="Wrap" />
<!--
RepeatButton - 按住後會重復執行單擊操作的按鈕
Delay - 按住按鈕後,會先執行一次單擊操作,然後在此屬性指定的時間後開始重復執行單擊操作,單位毫秒,默認值 250
Interval - 重復執行單擊操作時,這個重復時間的間隔,單位毫秒,默認值 250
注:Button 的 ClickMode 默認為 Release,而 RepeatButton 的 ClickMode 默認為Press
-->
<RepeatButton Name="aa" Content="click me" Delay="1000" Interval="250" Click="RepeatButton_Click_1" Margin="0 10 0 0" />
</StackPanel>
</Grid>
</Page>
RepeatButtonDemo.xaml.cs
/*
* RepeatButton - 按住後會重復執行單擊操作的按鈕
*/
using Windows.UI.Xaml.Controls;
namespace XamlDemo.Controls
{
public sealed partial class RepeatButtonDemo : Page
{
public RepeatButtonDemo()
{
this.InitializeComponent();
}
private void RepeatButton_Click_1(object
sender, Windows.UI.Xaml.RoutedEventArgs e)
{
lblMsg.Text += "a";
}
}
}
4、ToggleButton 的 Demo
ToggleButtonDemo.xaml.cs
/*
* ToggleButton - 可切換狀態的按鈕
*/
using System;
using Windows.UI.Popups;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
namespace XamlDemo.Controls
{
public sealed partial class ToggleButtonDemo : Page
{
public ToggleButtonDemo()
{
this.InitializeComponent();
this.Loaded += ToggleButtonDemo_Loaded;
}
void ToggleButtonDemo_Loaded(object sender, RoutedEventArgs e)
{
/*
* ToggleButton - 可切換狀態的 Button
* IsThreeState - 是否支持 3 狀態
* IsChecked - 按鈕的選中狀態: false, true, null
* Checked - 按鈕變為選中狀態後所觸發的事件
* Unchecked - 按鈕變為未選中狀態後所觸發的事件
* Indeterminate - 按鈕變為不確定狀態後所觸發的事件
*/
ToggleButton btn = new ToggleButton();
btn.Content = "可切換狀態的按鈕";
btn.Checked += btn_Checked;
btn.Unchecked += btn_Unchecked;
root.Children.Add(btn);
}
async void btn_Unchecked(object sender,
RoutedEventArgs e)
{
await new MessageDialog("按鈕為未選中狀態").ShowAsync();
}
async void btn_Checked(object sender,
RoutedEventArgs e)
{
await new MessageDialog("按鈕為選中狀態").ShowAsync();
}
}
}
5、RadioButton 的 Demo
RadioButtonDemo.xaml
<Page
x:Class="XamlDemo.Controls.RadioButtonDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="Transparent">
<StackPanel Name="root" Margin="120 0 0 0">
<!--
RadioButton - 單選框控件(繼承自 ToggleButton)
GroupName - 單選框的組名,同一組單選框只能有一個為選中狀態
-->
<RadioButton GroupName="groupName" IsChecked="True" Content="RadioButton1" />
<RadioButton GroupName="groupName" Content="RadioButton2" />
</StackPanel>
</Grid>
</Page>
6、CheckBox 的 Demo
CheckBoxDemo.xaml
<Page
x:Class="XamlDemo.Controls.CheckBoxDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="Transparent">
<StackPanel Name="root" Margin="120 0 0 0">
<!--
CheckBox - 復選框控件(繼承自 ToggleButton)
-->
<CheckBox IsChecked="True" Content="CheckBox1" />
<CheckBox IsChecked="False" Content="CheckBox2" />
</StackPanel>
</Grid>
</Page>
7、ToggleSwitch 的 Demo
ToggleSwitchDemo.xaml
<Page
x:Class="XamlDemo.Controls.ToggleSwitchDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="Transparent">
<Grid.Resources>
<!--
自定義關閉狀態的顯示內容的數據模板
-->
<Style x:Key="MyToggleSwitchStyle" TargetType="ToggleSwitch">
<Setter Property="OffContentTemplate">
<Setter.Value>
<DataTemplate>
<Grid Background="Red">
<TextBlock Text="{Binding}" />
</Grid>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<StackPanel Name="root" Margin="120 0 0 0">
<!--
ToggleSwitch - 狀態切換控件
Header - 標題內容
OffContent - 關閉狀態的顯示內容
OnContent - 打開狀態的顯示內容
IsOn - 是否是 On 的狀態
Toggled - 狀態改變後所觸發的事件
-->
<ToggleSwitch OffContent="off" Header="wifi" IsOn="True" Style="{StaticResource MyToggleSwitchStyle}">
<!--
自定義打開狀態的顯示內容
-->
<ToggleSwitch.OnContent>
<StackPanel Background="Blue">
<TextBlock Text="on" TextAlignment="Right" />
</StackPanel>
</ToggleSwitch.OnContent>
</ToggleSwitch>
</StackPanel>
</Grid>
</Page>
OK
[源碼下載]:http://files.cnblogs.com/webabcd/Windows8.rar