您的位置:首页 > 产品设计 > UI/UE

稳扎稳打Silverlight(46) - 4.0UI之FlowDirection, TextTrimming, 响应鼠标滚轮事件, 响应鼠标右键事件, 全屏的新特性

2011-12-01 19:05 627 查看
[源码下载]

[align=center]稳扎稳打Silverlight(46) - 4.0UI之FlowDirection, TextTrimming, 响应鼠标滚轮事件, 响应鼠标右键事件, 全屏的新特性[/align]

作者:webabcd

介绍

Silverlight 4.0 用户界面(UI)相关:

FlowDirection - 指定文本或界面元素在它们的父元素中的流动方向
TextTrimming - 文字溢出时的显示方式
响应鼠标的滚轮事件
响应鼠标的右键事件
全屏的新特性 - 当其他程序获得焦点时,是否退出全屏模式

在线DEMO

/article/4589659.html

示例

1、演示 FlowDirection 的效果

FlowDirectionDemo.xaml


代码

<navigation:Page x:Class="Silverlight40.UI.FlowDirectionDemo"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"

Title="FlowDirectionDemo Page">

<StackPanel Width="200" HorizontalAlignment="Left">

<!--

FrameworkElement.FlowDirection - 指定文本或界面元素在它们的父元素中的流动方向 [System.Windows.FlowDirection 枚举]

FlowDirection.LeftToRight - 内容从左到右流动(默认值)

FlowDirection.RightToLeft - 内容从右到左流动

-->

<StackPanel Orientation="Horizontal" FlowDirection="RightToLeft">

<TextBlock Text="1" />

<TextBlock Text="2" />

<TextBlock Text="3" />

</StackPanel>

</StackPanel>

</navigation:Page>

2、演示 TextTrimming 的效果

TextTrimming.xaml


代码

<navigation:Page x:Class="Silverlight40.UI.TextTrimming"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"

Title="TextTrimming Page">

<Grid x:Name="LayoutRoot">

<StackPanel HorizontalAlignment="Left">

<!--

TextBlock.TextTrimming - 文字溢出时的显示方式 [System.Windows.TextTrimming 枚举]

TextTrimming.None - 不做任何处理

TextTrimming.WordEllipsis - 在边界处,用省略号代替剩余文本

-->

<TextBlock Text="abcdefghijklmnopqrstuvwxyz" ToolTipService.ToolTip="abcdefghijklmnopqrstuvwxyz" Width="100" TextTrimming="None" />

<TextBlock Text="abcdefghijklmnopqrstuvwxyz" ToolTipService.ToolTip="abcdefghijklmnopqrstuvwxyz" Width="100" TextTrimming="WordEllipsis" />

</StackPanel>

</Grid>

</navigation:Page>

3、演示如何响应鼠标滚轮事件

MouseWheel.xaml


代码

<navigation:Page x:Class="Silverlight40.UI.MouseWheel"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"

xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"

Title="MouseWheel Page">

<Grid x:Name="LayoutRoot">

<StackPanel HorizontalAlignment="Left" Orientation="Horizontal">

<!--

在 Silverlight 4.0 中像 ListBox, DataGrid, ComboBox 这类的控件,如果出现了垂直滚动条的话,则可以通过滚动鼠标滚轮的方法来控制该滚动条

-->

<ListBox Name="listBox" VerticalAlignment="Top" Width="100" Height="200">

<ListBox.ItemTemplate>

<DataTemplate>

<StackPanel Orientation="Horizontal">

<TextBlock Text="{Binding}" Margin="1" />

</StackPanel>

</DataTemplate>

</ListBox.ItemTemplate>

</ListBox>

<sdk:DataGrid Name="dataGrid" VerticalAlignment="Top" Width="100" Height="200" IsReadOnly="True" AutoGenerateColumns="True" />

<ComboBox Name="comboBox" VerticalAlignment="Top" Width="100" Height="20" MaxDropDownHeight="200" />

<!--

用于演示如何响应鼠标的滚轮事件

-->

<StackPanel>

<TextBlock Name="lblMsg" VerticalAlignment="Top" />

<Grid Name="grid" Width="100" Height="100">

<Rectangle Fill="Yellow" />

<TextBlock Text="Mouse wheel me" />

</Grid>

</StackPanel>

</StackPanel>

</Grid>

</navigation:Page>

MouseWheel.xaml.cs


代码

/*

* 本例演示如何响应鼠标滚轮事件

* UIElement.MouseWheel - 鼠标滚轮滚动时所触发的事件

* MouseWheelEventArgs.Delta - 滚轮向上滚动为正数;滚轮向下滚动为负数

*/

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.Navigation;

namespace Silverlight40.UI

{

public partial class MouseWheel : Page

{

public MouseWheel()

{

InitializeComponent();

}

protected override void OnNavigatedTo(NavigationEventArgs e)

{

List<int> list = new List<int>();

for (int i = 0; i < 100; i++)

{

list.Add(i);

}

listBox.ItemsSource = list;

dataGrid.ItemsSource = list;

comboBox.ItemsSource = list;

grid.MouseWheel += new MouseWheelEventHandler(grid_MouseWheel);

}

void grid_MouseWheel(object sender, MouseWheelEventArgs e)

{

lblMsg.Text = "Delta: " + e.Delta;

}

}

}

4、演示如何响应鼠标右键事件

MouseRightClick.xaml


代码

<navigation:Page x:Class="Silverlight40.UI.MouseRightClick"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"

Title="MouseRightClick Page">

<Grid x:Name="LayoutRoot">

<StackPanel HorizontalAlignment="Left">

<TextBlock Name="lblMsg" Width="120" />

<Button Name="button" Content="right click me" Width="120" />

</StackPanel>

</Grid>

</navigation:Page>

MouseRightClick.xaml.cs


代码

/*

* 本例演示如何响应鼠标右键事件

* UIElement.MouseRightButtonDown - 鼠标右键按下时所触发的事件

* UIElement.MouseRightButtonUp - 鼠标右键抬起时所触发的事件

*/

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.Navigation;

namespace Silverlight40.UI

{

public partial class MouseRightClick : Page

{

public MouseRightClick()

{

InitializeComponent();

}

protected override void OnNavigatedTo(NavigationEventArgs e)

{

button.MouseRightButtonDown += new MouseButtonEventHandler(button_MouseRightButtonDown);

button.MouseRightButtonUp += new MouseButtonEventHandler(button_MouseRightButtonUp);

}

void button_MouseRightButtonDown(object sender, MouseButtonEventArgs e)

{

lblMsg.Text = "鼠标右键 Down";

e.Handled = true;

}

void button_MouseRightButtonUp(object sender, MouseButtonEventArgs e)

{

lblMsg.Text = "鼠标右键 Up";

e.Handled = true;

}

}

}

5、演示全屏的新特性

FullScreen.xaml


代码

<navigation:Page x:Class="Silverlight40.UI.FullScreen"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"

Title="FullScreen Page">

<Grid x:Name="LayoutRoot">

<Button Name="btnFullScreen" Width="100" Height="50" Content="最大化/还原" Click="btnFullScreen_Click" />

</Grid>

</navigation:Page>

FullScreen.xaml.cs


代码

/*

* Application.Current.Host.Content.FullScreenOptions - 全屏的选项

* System.Windows.Interop.FullScreenOptions.None - 当其他程序获得焦点时,退出全屏模式(默认值)

* System.Windows.Interop.FullScreenOptions.StaysFullScreenWhenUnfocused - 当其他程序获得焦点时,保持全屏模式

* 当设置为“StaysFullScreenWhenUnfocused”全屏时会弹出对话框,要求用户确认是否使用“StaysFullScreenWhenUnfocused”的全屏模式。如果程序是“被信任的应用程序”则不会弹出该对话框

*/

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.Navigation;

namespace Silverlight40.UI

{

public partial class FullScreen : Page

{

public FullScreen()

{

InitializeComponent();

}

protected override void OnNavigatedTo(NavigationEventArgs e)

{

}

private void btnFullScreen_Click(object sender, RoutedEventArgs e)

{

Application.Current.Host.Content.FullScreenOptions = System.Windows.Interop.FullScreenOptions.StaysFullScreenWhenUnfocused;

Application.Current.Host.Content.IsFullScreen ^= true;

}

}

}

OK

[源码下载]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐