Windows 8 Store Apps(2)-コントロールのボタンコントロールを再想像する:Button,HyperlinkButton,RepeatButton,ToggleButton,RadioButton,CheckBox,ToggleSwitch

32986 ワード

[ソースのダウンロード]
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のDemoButtonDemo.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のDemoHyperlinkButtonDemo.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のDemoRepeatButtonDemo.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のDemoToggleButtonDemo.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のDemoRadioButtonDemo.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のDemoCheckBox.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のDemoToggleSwitchDemo.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 [ソースのダウンロード]