重新想象 Windows 8 Store Apps (2) - 控件之按钮控件: Button, HyperlinkButton, RepeatButton, ToggleButton, RadioButton, CheckBox, ToggleSwitch

简介: 原文:重新想象 Windows 8 Store Apps (2) - 控件之按钮控件: Button, HyperlinkButton, RepeatButton, ToggleButton, RadioButton, CheckBox, ToggleSwitch[源码下载] 重新想象 Wind...
原文: 重新想象 Windows 8 Store Apps (2) - 控件之按钮控件: Button, HyperlinkButton, RepeatButton, ToggleButton, RadioButton, CheckBox, ToggleSwitch

[源码下载]


重新想象 Windows 8 Store Apps (2) - 控件之按钮控件: Button, HyperlinkButton, RepeatButton, ToggleButton, RadioButton, CheckBox, ToggleSwitch



作者:webabcd


介绍
重新想象 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
[源码下载]

目录
相关文章
|
测试技术 UED Python
App自动化测试:高级控件交互技巧
Appium 的 Actions 类支持在移动应用自动化测试中模拟用户手势,如滑动、长按等,增强交互性测试。ActionChains 是 Selenium 的概念,用于网页交互,而 Actions 专注于移动端。在Python中,通过ActionChains和W3C Actions可以定义手势路径,例如在手势解锁场景中,先点击设置,然后定义触点移动路径执行滑动解锁,最后验证解锁后的元素状态。此功能对于确保应用在复杂交互下的稳定性至关重要。
|
XML Java Android开发
Android Studio App开发中改造已有的控件实战(包括自定义支付宝月份选择器、给翻页栏添加新属性、不滚动的列表视图 附源码)
Android Studio App开发中改造已有的控件实战(包括自定义支付宝月份选择器、给翻页栏添加新属性、不滚动的列表视图 附源码)
246 1
|
JavaScript Linux C#
【傻瓜级JS-DLL-WINCC-PLC交互】1.C#用windows窗体控件创建.net控件
【傻瓜级JS-DLL-WINCC-PLC交互】1.C#用windows窗体控件创建.net控件
310 0
|
XML Java Android开发
Android Studio App开发中高级控件下拉列表Spinner的讲解及实战(附源码 超详细必看)
Android Studio App开发中高级控件下拉列表Spinner的讲解及实战(附源码 超详细必看)
1451 0
|
API C# Windows
C#实现操作Windows窗口句柄:遍历、查找窗体和控件【窗口句柄最全总结之一】
C#对Windows窗口或窗口句柄的操作,都是通过 P/Invoke Win32 API 实现的,DllImport引入Windows API操作窗口(句柄),可以实现枚举已打开的窗口、向窗口...
5508 0
C#实现操作Windows窗口句柄:遍历、查找窗体和控件【窗口句柄最全总结之一】
|
C++ Windows
C++ Windows窗口程序:子窗口控件之按钮类button
C++ Windows窗口程序:子窗口控件之按钮类button
1256 0
|
数据可视化 编译器 C++
C++ 用DEV-C++建一个Windows窗口程序带文本框和命令按钮
C++ 用DEV-C++建一个Windows窗口程序带文本框和命令按钮
3059 0
|
XML JavaScript 测试技术
|
4月前
|
安全 数据安全/隐私保护 虚拟化
Windows Server 2022 中文版、英文版下载 (2025 年 5 月更新)
Windows Server 2022 中文版、英文版下载 (2025 年 5 月更新)
733 2

热门文章

最新文章