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

稳扎稳打Silverlight(5) - 2.0控件之ListBox, MediaElement, MultiScaleImage, PasswordBox

[索引页]
[源码下载]


稳扎稳打Silverlight(5) - 2.0控件之ListBox,MediaElement,MultiScaleImage,PasswordBox,ProgressBar,RadioButton


作者: webabcd


介绍
Silverlight 2.0 控件一览:ListBox,RadioButton  


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


示例  
1、ListBox.xaml
<UserControl x:Class="Silverlight20.Control.ListBox"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <StackPanel HorizontalAlignment="Left">
                
                <!--
                SelectionChanged - ListBox中某个对象被选中后所触发的事件
                -->
                <ListBox Margin="5" Width="200" Height="100" SelectionChanged="ListBox_SelectionChanged">
                        <ListBoxItem Content="ListBoxItem01" />
                        <ListBoxItem Content="ListBoxItem02" />
                        <ListBoxItem Content="ListBoxItem03" />
                        <ListBoxItem Content="ListBoxItem04" />
                        <ListBoxItem Content="ListBoxItem05" />
                        <ListBoxItem Content="ListBoxItem06" />
                        <ListBoxItem Content="ListBoxItem07" />
                        <ListBoxItem Content="ListBoxItem08" />
                        <ListBoxItem Content="ListBoxItem09" />
                        <ListBoxItem Content="ListBoxItem10" />
                </ListBox>
                
                <!--
                ListBox中可以包含任何对象
                -->
                <ListBox Margin="5" Width="200">
                        <TextBlock Text="TextBlock" />
                        <TextBox Text="TextBox" />
                        <Button Content="Button" />
                </ListBox>
                
        </StackPanel>
</UserControl>
 
ListBox.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 ListBox : UserControl

        {

                 public ListBox()

                {

                        InitializeComponent();

                }


                 private void ListBox_SelectionChanged( object sender,SelectionChangedEventArgs e)

                {

                         // ListBox.SelectedItem - ListBox中被选中的对象


                        var lst = sender as System.Windows.Controls.ListBox;


                        MessageBox.Show(

                                ((System.Windows.Controls.ListBoxItem)lst.SelectedItem).Content + " 被单击了",

                                 "提示",

                                MessageBoxButton.OK);

                }

        }

}
 
2、MediaElement.xaml
<UserControl x:Class="Silverlight20.Control.MediaElement"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <StackPanel HorizontalAlignment="Center">
                
                <!--
                Source - 视频路径
                Autoplay - 是否自动播放
                -->
                <MediaElement x:Name="mediaElement" Height="250" Autoplay="False"
                                        Source="/Silverlight20;component/Video/Demo.wmv"    />
                
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
                        <ToggleButton x:Name="play" Content="播放" Margin="5" Click="play_Click" />
                        <ToggleButton x:Name="mute" Content="静音" Margin="5" Click="mute_Click" />
                </StackPanel>
        </StackPanel>
</UserControl>
 
MediaElement.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 MediaElement : UserControl

        {

                 public MediaElement()

                {

                        InitializeComponent();

                }


                 void play_Click( object sender,RoutedEventArgs e)

                {

                        var tb = sender as System.Windows.Controls.Primitives.ToggleButton;

                         if (tb.IsChecked == true)

                        {

                                tb.Content = "暂停";


                                 // MediaElement.Play() - 播放视频

                                 this.mediaElement.Play();

                        }

                         else

                        {

                                tb.Content = "播放";


                                 // MediaElement.Pause() - 暂停视频

                                 // MediaElement.Stop() - 停止视频

                                 this.mediaElement.Pause();

                        }

                }


                 void mute_Click( object sender,RoutedEventArgs e)

                {

                        var tb = sender as System.Windows.Controls.Primitives.ToggleButton;

                         if (tb.IsChecked == true)

                        {

                                tb.Content = "有声";


                                 // MediaElement.IsMuted - 是否静音

                                 // MediaElement.Volume - 声音大小(0 - 1)

                                 this.mediaElement.IsMuted = true;

                        }

                         else

                        {

                                tb.Content = "静音";

                                 this.mediaElement.IsMuted = false;

                        }

                }

        }

}
 
 
3、MultiScaleImage.xaml
<UserControl x:Class="Silverlight20.Control.MultiScaleImage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <StackPanel HorizontalAlignment="Left">
                
                <MultiScaleImage x:Name="msi" Width="400" Height="300"></MultiScaleImage>
                
        </StackPanel>
</UserControl>
 
MultiScaleImage.xaml.cs(支持放大/缩小/拖动/滚轮之类的,摘自Deep Zoom Composer生成代码

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 MultiScaleImage : UserControl

        {

                 //

                 // Based on prior work done by Lutz Gerhard,Peter Blois,and Scott Hanselman

                 //

                Point lastMousePos = new Point();


                 double _zoom = 1;

                 bool mouseButtonpressed = false;

                 bool mouseIsDragging = false;

                Point dragOffset;

                Point currentPosition;


                 public double ZoomFactor

                {

                        get { return _zoom; }

                        set { _zoom = value; }

                }


                 public MultiScaleImage()

                {

                        InitializeComponent();


                         //

                         // We are setting the source here,but you should be able to set the Source property via

                         //

                         this.msi.source = new DeepZoomImageTileSource( new Uri( "/DeepZoomImages/dzc_output.xml",UriKind.Relative));


                         //

                         // Firing an event when the MultiScaleImage is Loaded

                         //

                         this.msi.Loaded += new RoutedEventHandler(msi_Loaded);


                         //

                         // Firing an event when all of the images have been Loaded

                         //

                         this.msi.ImageOpenSucceeded += new RoutedEventHandler(msi_ImageOpenSucceeded);


                         //

                         // Handling all of the mouse and keyboard functionality

                         //

                         this.MouseMove += delegate( object sender,MouseEventArgs e)

                        {

                                 if (mouseButtonpressed)

                                {

                                        mouseIsDragging = true;

                                }

                                 this.lastMousePos = e.GetPosition( this.msi);

                        };


                         this.MouseLeftButtonDown += delegate( object sender,MouseButtonEventArgs e)

                        {

                                mouseButtonpressed = true;

                                mouseIsDragging = false;

                                dragOffset = e.GetPosition( this);

                                currentPosition = msi.ViewportOrigin;

                        };


                         this.msi.MouseLeave += delegate( object sender,MouseEventArgs e)

                        {

                                mouseIsDragging = false;

                        };


                         this.MouseLeftButtonUp += delegate( object sender,MouseButtonEventArgs e)

                        {

                                mouseButtonpressed = false;

                                 if (mouseIsDragging == false)

                                {

                                         bool shiftDown = (Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift;


                                        ZoomFactor = 2.0;

                                         if (shiftDown) ZoomFactor = 0.5;

                                        Zoom(ZoomFactor,this.lastMousePos);

                                }

                                mouseIsDragging = false;

                        };


                         this.MouseMove += delegate( object sender,MouseEventArgs e)

                        {

                                 if (mouseIsDragging)

                                {

                                        Point newOrigin = new Point();

                                        newOrigin.X = currentPosition.X - (((e.GetPosition(msi).X - dragOffset.X) / msi.ActualWidth) * msi.ViewportWidth);

                                        newOrigin.Y = currentPosition.Y - (((e.GetPosition(msi).Y - dragOffset.Y) / msi.ActualHeight) * msi.ViewportWidth);

                                        msi.ViewportOrigin = newOrigin;

                                }

                        };


                         new MouseWheelHelper( this).Moved += delegate( object sender,MouseWheelEventArgs e)

                        {

                                e.Handled = true;

                                 if (e.Delta > 0)

                                        ZoomFactor = 1.2;

                                 else

                                        ZoomFactor = .80;


                                Zoom(ZoomFactor,this.lastMousePos);

                        };

                }


                 void msi_ImageOpenSucceeded( object sender,RoutedEventArgs e)

                {

                         //If collection,this gets you a list of all of the MultiScaleSubImages

                         //

                         //foreach (MultiScaleSubImage subImage in msi.SubImages)

                         //{

                         //        // Do something

                         //}

                }


                 void msi_Loaded( object sender,RoutedEventArgs e)

                {

                         // Hook up any events you want when the image has successfully been opened

                }


                 public void Zoom( double zoom,Point pointToZoom)

                {

                        Point logicalPoint = this.msi.ElementToLogicalPoint(pointToZoom);

                         this.msi.ZoomAboutLogicalPoint(zoom,logicalPoint.X,logicalPoint.Y);

                }


                 /*

                 *    Sample event handlerrs tied to the Click of event of varIoUs buttons for    

                 *    showing all images,zooming in,and zooming out!

                 *    

                private void ShowAllClick(object sender,RoutedEventArgs e)

                {

                        this.msi.ViewportOrigin = new Point(0,0);

                        this.msi.ViewportWidth = 1;

                        ZoomFactor = 1;

                }


                private void zoomInClick(object sender,RoutedEventArgs e)

                {

                        Zoom(1.2,new Point(this.ActualWidth / 2,this.ActualHeight / 2));

                }


                private void zoomOutClick(object sender,RoutedEventArgs e)

                {

                        Zoom(.8,this.ActualHeight / 2));

                }

                 * */

        }

}
 
 
 

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

相关推荐