微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

稳扎稳打Silverlight(3) - 2.0控件之Border, Button, Calendar, Canvas, CheckBox, ComboBox

[索引页]
[源码下载]


稳扎稳打Silverlight(3) - 2.0控件之Border,Button,Calendar,Canvas,CheckBox,ComboBox


作者: webabcd


介绍
Silverlight 2.0 控件一览:Border,ComboBox  


在线DEMO
http://www.voidcn.com/article/p-ounmxjds-tq.html  


示例
1、Border.xaml
<UserControl x:Class="Silverlight20.Control.Border"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <StackPanel HorizontalAlignment="Left">
                
                <!--
                BorderThickness - 边框的宽度(像素值:上下左右;左右,上下;左,上,右,下)
                BorderBrush - 边框的颜色
                CornerRadius - 边框角的半径
                -->
                <Border BorderThickness="1,3,5,7" BorderBrush="Red" CornerRadius="10" Width="120" Margin="5">
                        <TextBlock Text="红色Border" ToolTipService.ToolTip="红色Border" TextAlignment="Center" />
                </Border>

                <!--
                Border.BorderBrush - 继承自 System.Windows.Media.Brush 的对象
                -->
                <Border BorderThickness="3" CornerRadius="10" Width="120" Margin="5">
                        <TextBlock Text="红色Border" ToolTipService.ToolTip="红色Border" TextAlignment="Center" />
                        <Border.BorderBrush>
                                <ImageBrush ImageSource="http://silverlight.net/Themes/silverlight/images/logo.jpg" />
                        </Border.BorderBrush>
                </Border>

        </StackPanel>
</UserControl>
 
 
2、Button.xaml
<UserControl x:Class="Silverlight20.Control.Button"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <StackPanel HorizontalAlignment="Left" Width="400">

                <!--
                Content - 按钮上显示内容
                Click - 按钮的单击事件
                Cursor - 鼠标移动到按钮上面时,鼠标指针的样式
                        Arrow - 箭头
                        Hand - 手形    
                        Wait - 沙漏
                        IBeam - “I”字形    
                        Stylus - 点
                        Eraser - 橡皮
                        None - 无
                Padding - 容器内的内容与容器边缘的填充距离(像素值:上下左右;左右,下)
                -->
                <Button Tag="我是Button" Content="我是Button" Cursor="Eraser" Click="Button_Click" Padding="5" Margin="5" />

                <!--
                IsEnabled - 按钮是否有效
                -->
                <Button Tag="无效Button" Content="无效Button" IsEnabled="False" Click="Button_Click" Margin="5" />

                <!--
                Button.Content - 按钮上显示内容
                ClickMode - 触发单击事件的类型 [System.Windows.Controls.ClickMode枚举]
                        ClickMode.Press - 鼠标左键单击
                        ClickMode.Release - 鼠标左键单击并放开
                        ClickMode.Hover - 鼠标经过
                -->
                <Button Tag="图片Button" ClickMode="Release" Click="Button_Click" Margin="5">
                        <Button.Content>
                                <Image Source="/Silverlight20;component/Images/logo.jpg" />
                        </Button.Content>
                </Button>

        </StackPanel>
</UserControl>
 
Button.xaml.cs

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;


using System.Windows.browser;


namespace Silverlight20.Control

{

         public partial class Button : UserControl

        {

                 public Button()

                {

                        InitializeComponent();

                }


                 private void Button_Click( object sender,RoutedEventArgs e)

                {

                        HtmlWindow html = HtmlPage.Window;

                        html.Alert(((System.Windows.Controls.Button)sender).Tag.ToString() + " 被单击了");

                }

        }

}
 
 
3、Calendar.xaml
<!--
Calendar控件的命名空间和其他控件一样,都是在System.Windows.Controls下
但是其是在System.Windows.Controls.dll程序集中定义的
所以要引入相应的xml命名空间
-->
<UserControl x:Class="Silverlight20.Control.Calendar"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:basics="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls">
        <StackPanel HorizontalAlignment="Left">
                <TextBox x:Name="txtMsg" Margin="5"    />
                
                <!--
                SelectedDatesChanged - 选中日期后所触发的事件
                displayDateEnd - 此日期之后的日期不予显示    
                displayDateStart - 此日期之前的日期不予显示
                FirstDayOfWeek - 控件所显示的每星期的第一天为星期几 [System.DayOfWeek枚举]
                displayMode - 控件的显示模式 [System.Windows.Controls.displayMode枚举]
                        displayMode.Month - 标题显示年月,内容显示日期。认值
                        displayMode.Year - 标题显示年,内容显示
                        displayMode.Decade - 标题显示一个十年的区间,内容显示
                IsTodayHighlighted - 是否高亮显示今天的日期
                -->
                <basics:Calendar x:Name="calendar" Margin="5" FirstDayOfWeek="Monday"
                        SelectedDatesChanged="calendar_SelectedDatesChanged">
                </basics:Calendar>
                
                <StackPanel Orientation="Horizontal">
                        
                        <CheckBox Content="禁止选择今天以前的日期" Margin="5"
                                Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked" />

                        <RadioButton GroupName="selectionMode" x:Name="SingleDate" Content="可选单一日期" Margin="5"                                
                                Checked="selectionMode_Changed" />

                        <RadioButton GroupName="selectionMode" x:Name="None" Content="不可选日期" Margin="5"                                
                                Checked="selectionMode_Changed" />

                        <RadioButton GroupName="selectionMode" x:Name="SingleRange" Content="可选连续日期(shift)" Margin="5"                                
                                Checked="selectionMode_Changed" />

                        <RadioButton GroupName="selectionMode" x:Name="MultipleRange" Content="可选多个日期(ctrl)" Margin="5"                                
                                Checked="selectionMode_Changed" />
                        
                </StackPanel>
                
        </StackPanel>
</UserControl>
 
Calendar.xaml.cs

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 Silverlight20.Control

{

         public partial class Calendar : UserControl

        {

                 public Calendar()

                {

                        InitializeComponent();

                }


                 private void calendar_SelectedDatesChanged( object sender,SelectionChangedEventArgs e)

                {

                         // Calendar.SelectedDate - 选中的日期

                         // Calendar.SelectedDates - 选中的多个日期集合


                         this.txtMsg.Text = "";

                         foreach (DateTime dt in calendar.SelectedDates)

                        {

                                 this.txtMsg.Text += dt.ToString( "yyyy-MM-dd");

                                 this.txtMsg.Text += " ";

                        }

                }


                 private void CheckBox_Checked( object sender,RoutedEventArgs e)

                {

                         if ( this.calendar.SelectedDate != null && this.calendar.SelectedDate < DateTime.Now.Date)

                                 this.calendar.SelectedDate = DateTime.Now;


                         // Calendar.BlackoutDates - 不允许选择的日期集合

                         // Calendar.BlackoutDates.AddDatesInPast() - 禁止选择今天之前的日期

                         this.calendar.BlackoutDates.AddDatesInPast();

                }


                 private void CheckBox_Unchecked( object sender,RoutedEventArgs e)

                {

                         // Calendar.BlackoutDates.Clear() - 清除 不允许选择的日期集合 的设置

                         this.calendar.BlackoutDates.Clear();

                }


                 private void selectionMode_Changed( object sender,RoutedEventArgs e)

                {

                         // CalendarSelectionMode.None - 禁止选择日期

                         // CalendarSelectionMode.SingleRange - 可以选择多个日期,连续日期(Shift键配合)

                         // CalendarSelectionMode.MultipleRange - 可以选择多个日期,任意日期(Ctrl键配合)

                         // CalendarSelectionMode.SingleDate - 只能选择一个日期

                         switch (((System.Windows.Controls.RadioButton)sender).Name)

                        {

                                 case "None":

                                         this.calendar.SelectionMode = CalendarSelectionMode.None;

                                         break;

                                 case "SingleRange":

                                         this.calendar.SelectionMode = CalendarSelectionMode.SingleRange;

                                         break;

                                 case "MultipleRange":

                                         this.calendar.SelectionMode = CalendarSelectionMode.MultipleRange;

                                         break;

                                 default:

                                         this.calendar.SelectionMode = CalendarSelectionMode.SingleDate;

                                         break;

                        }

                }

        }

}
 
 
4、Canvas.xaml
<UserControl x:Class="Silverlight20.Control.Canvas"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" HorizontalAlignment="Left">
        
        <!--
        Canvas - 绝对布局模式
                Canvas.Left - 与上一层 Canvas 的 Y轴 间的距离,左上角为原点
                Canvas.Top - 与上一层 Canvas 的 X轴 间的距离,左上角为原点
        -->
        <Canvas Background="Red" Width="100" Height="100">
                
                <Canvas Background="Green" Width="100" Height="100" Canvas.Left="120" Canvas.Top="120" >
                        <TextBlock Text="TextBlock" Canvas.Top="20" />
                </Canvas>
                
        </Canvas>
        
</UserControl>
 

5、CheckBox.xaml  
<UserControl x:Class="Silverlight20.Control.CheckBox"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <StackPanel>

                <!--
                IsChecked - 是否被选中
                -->
                <CheckBox x:Name="chk1" Content="我是CheckBox" IsChecked="False" Margin="5" />

                <!--
                IsThreeState - 是否是 有3个状态 的CheckBox
                        false - 通常的两状态。认值
                        true - 有3个状态,分别为:true,false,null。也就是说 CheckBox.IsChecked 是 bool? 类型
                -->
                <CheckBox x:Name="chk2" Content="红色的三状态的CheckBox" Background="Red" IsThreeState="True" Margin="5" />

                <!--
                IsEnabled - CheckBox是否有效
                -->
                <CheckBox x:Name="chk3" Content="无效的CheckBox" IsEnabled="False" Margin="5"/>

                <!--
                CheckBox.Content - CheckBox所对应的内容
                Checked - 被选中后所触发的事件
                Unchecked - 被取消选中后所触发的事件
                Click - 被单击后所触发的事件
                -->
                <CheckBox x:Name="chk4" Checked="Button_Click" Margin="5">
                        <CheckBox.Content>
                                <Image Source="/Silverlight20;component/Images/logo.jpg" Width="100" />
                        </CheckBox.Content>
                </CheckBox>

                <Button Content="各个CheckBox的选中状态" Width="200" HorizontalAlignment="Left" Click="Button_Click" Margin="5" />

        </StackPanel>
</UserControl>
 
CheckBox.xaml.cs

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;


using System.Windows.browser;


namespace Silverlight20.Control

{

         public partial class CheckBox : UserControl

        {

                 public CheckBox()

                {

                        InitializeComponent();

                }


                 private void Button_Click( object sender,RoutedEventArgs e)

                {

                        HtmlWindow html = HtmlPage.Window;

                        html.Alert( string.Format( "chk1: {0}\r\nchk2: {1}\r\nchk3: {2}\r\nchk4: {3}",    

                                chk1.IsChecked,chk2.IsChecked,chk3.IsChecked,chk4.IsChecked));

                }

        }

}
 
 
6、ComboBox.xaml
<UserControl x:Class="Silverlight20.Control.ComboBox"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <StackPanel HorizontalAlignment="Left">
                
                <!--
                XAML方式构造ComboBox
                -->
                <ComboBox x:Name="cbo" Width="200" Margin="5">
                        <ComboBoxItem Content="ComboBoxItem1" />
                        <ComboBoxItem Content="ComboBoxItem2" />
                        <ComboBoxItem Content="ComboBoxItem3" />
                </ComboBox>
                
                <!--
                后台邦定方式构造ComboBox
                displayMemberPath - 数据源中需要被显示出来的字段名称
                MaxDropDownHeight - 下拉框的最大下拉高度
                -->
                <ComboBox x:Name="cbo2" displayMemberPath="Name" MaxDropDownHeight="100" Width="200" Margin="5" />
                
        </StackPanel>
</UserControl>
 
ComboBox.xaml.cs

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 Silverlight20.Control

{

         public partial class ComboBox : UserControl

        {

                 public ComboBox()

                {

                        InitializeComponent();


                        BindData();

                }


                 void BindData()

                {

                        var source = new Data.sourceData();


                         // 设置 ComboBox 的数据源

                        cbo2.ItemsSource = source.GetData().Take(10);

                }

        }

}
 
 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐