zoukankan      html  css  js  c++  java
  • Silverlight的UIElement和Control简单应用01

    1 UIElement

    UIElement是Silverlight的一个类,它包含在System.Windows.UIElement命名空间中。凡是继承System.Windows.UIElement命名空间的XAML类都具有“可视性”,所以可以呈现在Silverlight的界面上。

    UIElement常用事件有GotFocus和LostFocus、KeyDown和KeyUp、MouseEnter和MouseLeave等;

    常用方法有CaptureMouse、ReleaseMouseCapture、AddHandler、RemoveHandler和UpdateLayout等。

    2 Control

    Control就Silverlight应用程序中许多控件的基类,它比UIElement和FrameworkElement更进一步,定义的属性和方法等都是完全针对XAML控件。

    通常一个控件都包括最基本的鼠标和键盘输入事件,这些事件都在UIElement中定义好了,而一些布局方面的属性都在FrameworkElement定义了,剩下的除了该控件本身属性以外,就全部定义在Control类之中。

    大多数控件都要包含诸如Background、BorderBrush、FontSize、Foreground、FontFamily、ControlTemplate等属性,这些在控件间具有很强的通用性,Control类中通常不包含控件某方法的具体实现。

    System.Windows.Controls.Control的派生关系如下:

    System.Object

       System.Windows.DependencyObject

          System.Windows.UIElement

             System.Windows.FrameworkElement

                System.Windows.Controls.Control

    3 建立Silverlight应用程序

       3.1 MainPage.xaml

      1 <UserControl 
      2     xmlns:twilightBlue="clr-namespace:System.Windows.Controls.Theming;assembly=System.Windows.Controls.Theming.TwilightBlue" 
      3     x:Class="button.MainPage"
      4     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      5     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      6     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      7     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      8     mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
      9     <twilightBlue:TwilightBlueTheme>
     10         <Grid x:Name="LayoutRoot">
     11             <Grid.Background>
     12                 <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
     13                     <GradientStop Color="Black" Offset="0"/>
     14                     <GradientStop Color="#8D2D96EF" Offset="1"/>
     15                 </LinearGradientBrush>
     16             </Grid.Background>
     17             <Grid.RowDefinitions>
     18                 <RowDefinition Height="Auto"/>
     19                 <RowDefinition Height="Auto"/>
     20                 <RowDefinition Height="Auto"/>
     21                 <RowDefinition Height="Auto"/>
     22                 <RowDefinition Height="Auto"/>
     23                 <RowDefinition Height="Auto"/>
     24             </Grid.RowDefinitions>
     25             <Canvas Name="layoutroot1">
     26                 <Button Name="button1"
     27                         Content="第一个按钮" Canvas.Left="10" Canvas.Top="10"
     28                         Click="Button_Click"
     29                         MouseEnter="Button_MouseEnter"
     30                         MouseLeave="Button_MouseLeave"
     31                         GotFocus="Button_GotFocus"
     32                         LostFocus="Button_LostFocus"/>
     33                 <Button Name="button2"
     34                         Content="第二个按钮" Canvas.Left="100" Canvas.Top="10"
     35                         IsEnabled="False"
     36                         IsEnabledChanged="Button_IsEnabledChanged"/>
     37                 <TextBox Name="messagebox" Width="300" Height="100"
     38                          AcceptsReturn="True" FontSize="14"
     39                          Canvas.Left="10" Canvas.Top="40"></TextBox>
     40                 <TextBlock Text="超级链接按钮演示" Foreground="#FFBC1F1F" Canvas.Left="400" Canvas.Top="10"
     41                            FontSize="18"/>
     42                 <HyperlinkButton Content="在新窗口中打开:www.baidu.com" 
     43                                  NavigateUri="http://www.baidu.com"
     44                                  TargetName="_blank"
     45                                  Canvas.Top="40" Canvas.Left="400"
     46                                  FontSize="18"
     47                                  ></HyperlinkButton>
     48                 <HyperlinkButton Content="在当前窗口中打开:www.baidu.com"
     49                                  NavigateUri="http://www.baidu.com"
     50                                  TargetName=""
     51                                  Canvas.Top="80" Canvas.Left="400"
     52                                  FontSize="18"
     53                                  ></HyperlinkButton>
     54             </Canvas>
     55             <TextBlock Text="选择控件示例" Margin="5,150,10,5" FontSize="18"
     56                        FontWeight="Bold" Foreground="#FFBE4D4D" Height="30"/>
     57             <CheckBox Name="checkbox1" Content="有两种状态的选择框" FontSize="18" Grid.Row="1" 
     58                       Margin="5,0,0,5" Checked="CheckBox_Checked"
     59                       Unchecked="CheckBox_Unchecked"/>
     60             <CheckBox Name="checkbox2" Content="有三种状态的选择框" IsThreeState="True"
     61                       Grid.Row="2" Margin="5,0,0,5" Checked="CheckBox_Checked"
     62                       Unchecked="CheckBox_Unchecked" FontSize="18"
     63                       Indeterminate="CheckBox_Indeterminate"/>
     64             <TextBox Name="tbmessage" AcceptsReturn="True" VerticalAlignment="Stretch"
     65                      VerticalScrollBarVisibility="Auto" FontSize="14"
     66                      Grid.Row="3" Margin="5,0,5,5" Height="100"/>
     67             <Grid x:Name="layoutgrid" Grid.Row="4">
     68                 <Grid.RowDefinitions>
     69                     <RowDefinition Height="Auto"/>
     70                     <RowDefinition Height="Auto"/>
     71                     <RowDefinition Height="Auto"/>
     72                 </Grid.RowDefinitions>
     73                 
     74                 <TextBlock Text="选择控件示例" Margin="5,10,10,10" FontSize="18"
     75                            FontWeight="Bold" Foreground="#FFBE4D4D" Grid.Row="0"/>
     76                 
     77                 <Grid x:Name="rb_group1" Grid.Row="1">
     78                     <Grid.RowDefinitions>
     79                         <RowDefinition Height="Auto"/>
     80                         <RowDefinition Height="Auto"/>
     81                         <RowDefinition Height="Auto"/>
     82                         <RowDefinition Height="Auto"/>
     83                     </Grid.RowDefinitions>
     84                     <TextBlock Name="tb_group1_message" Grid.Row="0"
     85                                Text="加入父容器自动分组:" FontSize="18"
     86                                HorizontalAlignment="Left" Margin="5,0,0,0"/>
     87                     <RadioButton Name="rb_group1_1" Content="自动分组-选项1"
     88                                  Grid.Row="1" Margin="10,0,0,0" FontSize="18"
     89                                  Checked="RadioButton_Checked"/>
     90                     <RadioButton Name="rb_group1_2" Content="自动分组-选项2"
     91                                  Grid.Row="2" Margin="10,0,0,0" FontSize="18"
     92                                  Checked="RadioButton_Checked"/>
     93                     <RadioButton Name="rb_group1_3" Content="自动分组-选项1"
     94                                  Grid.Row="3" Margin="10,0,0,0" FontSize="18"
     95                                  Checked="RadioButton_Checked"/>
     96                 </Grid>
     97 
     98                 <Grid x:Name="rb_group2" Grid.Row="2">
     99                     <Grid.RowDefinitions>
    100                         <RowDefinition Height="Auto"/>
    101                         <RowDefinition Height="Auto"/>
    102                         <RowDefinition Height="Auto"/>
    103                         <RowDefinition Height="Auto"/>
    104                         <RowDefinition Height="Auto"/>
    105                     </Grid.RowDefinitions>
    106                     <TextBlock Name="tb_group2_message" Grid.Row="0"
    107                                Text="用GroupName属性分组:" FontSize="18"
    108                                HorizontalAlignment="Left" Margin="5,0,48,0"/>
    109                     <RadioButton Name="rb_group2_1" Content="第一分组-选项1"
    110                                  Grid.Row="1" Margin="10,0,0,0" FontSize="18"
    111                                  Checked="RadioButton_Checked"/>
    112                     <RadioButton Name="rb_group2_2" Content="第一分组-选项2"
    113                                  Grid.Row="2" Margin="10,0,0,0" FontSize="18"
    114                                  Checked="RadioButton_Checked"/>
    115                     <RadioButton Name="rb_group3_1" Content="第二分组-选项1"
    116                                  Grid.Row="3" Margin="10,0,0,0" FontSize="18"
    117                                  Checked="RadioButton_Checked"/>
    118                     <RadioButton Name="rb_group3_2" Content="第二分组-选项2"
    119                                  Grid.Row="4" Margin="10,0,0,0" FontSize="18"
    120                                  Checked="RadioButton_Checked"/>
    121                 </Grid>
    122             </Grid>
    123         </Grid>
    124 
    125     </twilightBlue:TwilightBlueTheme>
    126 </UserControl>
    127 

       3.2 MainPage.xaml.cs(C#程序)

    代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;

    namespace button
    {
        
    public partial class MainPage : UserControl
        {
            
    public MainPage()
            {
                InitializeComponent();
            }

            
    private void Button_Click(object sender, RoutedEventArgs e)
            {
                
    this.messagebox.Text += "触发了和一个按钮的click事件。\n";
                
    this.button2.IsEnabled = !this.button2.IsEnabled;
            }

            
    private void Button_MouseEnter(object sender, MouseEventArgs e)
            {
                
    this.messagebox.Text += "鼠标指针进入第一个按钮的边界区域。\n";
            }

            
    private void Button_MouseLeave(object sender, MouseEventArgs e)
            {
                
    this.messagebox.Text += "鼠标指针进入第一个按钮的边界区域。\n";
            }

            
    private void Button_GotFocus(object sender, RoutedEventArgs e)
            {
                
    this.messagebox.Text += "第一个按钮获得焦点。\n";
            }

            
    private void Button_LostFocus(object sender, RoutedEventArgs e)
            {
                
    this.messagebox.Text += "第一个按钮失去焦点。\n";
            }

            
    private void Button_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)
            {
                
    this.messagebox.Text += "第二个按钮的isenable改变为" +
                    ((
    this.button2.IsEnabled == true? "True" : "False"+ "\n";
            }

            
    private void CheckBox_Checked(object sender, RoutedEventArgs e)
            {
                CheckBox cb 
    = sender as CheckBox;
                
    if (cb.Name == "checkbox1")
                {
                    
    this.tbmessage.Text += "两态选择框被选中\n";
                }
                
    else
                {
                    
    this.tbmessage.Text += "三态选择框被选中\n";
                }
            }

            
    private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
            {
                CheckBox cb 
    = sender as CheckBox;
                
    if (cb.Name == "checkbox1")
                {
                    
    this.tbmessage.Text += "两态选择框被撤销选中\n";
                }
                
    else
                {
                    
    this.tbmessage.Text += "三态选择框被撤销选中\n";
                }
            }

            
    private void CheckBox_Indeterminate(object sender, RoutedEventArgs e)
            {
                CheckBox cb 
    = sender as CheckBox;
                
    this.tbmessage.Text += "三态选择框被切换到不确定状态\n";
            }

            
    private void RadioButton_Checked(object sender, RoutedEventArgs e)
            {
                
    string groupMessage1 = "加入父容器自动分组:";
                
    string groupMessage2 = "用GroupName属性分组:";
                RadioButton rb 
    = sender as RadioButton;
                
    switch (rb.Name)
                {
                    
    case "rb_group1_1":
                        
    this.tb_group1_message.Text = groupMessage1 + "选项1被选中。";
                        
    break;
                    
    case "rb_group1_2":
                        
    this.tb_group1_message.Text = groupMessage1 + "选项2被选中。";
                        
    break;
                    
    case "rb_group1_3":
                        
    this.tb_group1_message.Text = groupMessage1 + "选项3被选中。";
                        
    break;
                    
    case "rb_group2_1":
                        
    this.tb_group2_message.Text = groupMessage2 + "分组->" + rb.GroupName + "的选项1被选中。";
                        
    break;
                    
    case "rb_group2_2":
                        
    this.tb_group2_message.Text = groupMessage2 + "分组->" + rb.GroupName + "的选项2被选中。";
                        
    break;
                    
    case "rb_group3_1":
                        
    this.tb_group2_message.Text = groupMessage2 + "分组->" + rb.GroupName + "的选项3被选中。";
                        
    break;
                    
    case "rb_group3_2":
                        
    this.tb_group2_message.Text = groupMessage2 + "分组->" + rb.GroupName + "的选项4被选中。";
                        
    break;
                }
            }

        }
    }

       3.3 程序运行效果图:

     

    4 总结

    Button控件

    Background:获取或设置按钮控件的背景。

    ClickMode:获取或设置Click事件何时发生。

    Foreground:获取或设置按钮控件的前景色。

    Height:获取或设置按钮控件的前景色。

    IsEnabled:获取或设置一个值,该值指示控件是否可以与用户交互;当值为False时,控件不响应用户的任何输入操作。

    HyperLinkButton控件

    NavigateUri:获取或设置单击HyperLinkButton控件时要导航到的URI。

    TargetName:设置由NavigateUri属性指定的网页要导航到的目标窗口的名称,学用值为_blank、_parent、_self、_top或固定值。

    CheckBox控件

    IsChecked:这个属性的值为True时,表示控件被选中;否则表示控件未被选中。

    IsEnabled:值为True时,控件可以与用户交互;否则控件不可用。

    IsThressState:值为True时,控件支持3种状态,否则支持2种状态(选中和未选中)。

  • 相关阅读:
    HDU 4350 Card
    HDU 4287 Intelligent IME
    POJ Stars
    字符串处理
    NYOJ 63 小猴子下落
    在 DataGrid 控件中显示 SQL Server 数据库中的数据
    Linq to sql学习之查询句法
    SqlMethods
    SQLSERVER 2008 R2中的全文检索
    分享学习网站大全
  • 原文地址:https://www.cnblogs.com/yongfeng/p/1743868.html
Copyright © 2011-2022 走看看