提升LOB应用程序的用户体验
立即解锁
发布时间: 2025-08-25 01:57:29 阅读量: 3 订阅数: 13 

# 提升LOB应用程序的用户体验
## 1. 剪贴板访问
Silverlight 4引入了`System.Windows.Clipboard`类,用于访问系统剪贴板以进行数据的复制和粘贴操作。需要注意的是,Silverlight 4仅支持对系统剪贴板进行Unicode文本的访问,并且这种访问可以在浏览器内和浏览器外模式下实现。
### 1.1 剪贴板类的静态方法
`Clipboard`类提供了三个静态方法来执行与剪贴板系统之间的数据传输操作,具体如下表所示:
| 方法 | 描述 |
| --- | --- |
| `ContainsText` | 如果系统剪贴板中存在UnicodeText格式的数据,则返回`true`;否则返回`false`。 |
| `GetText` | 从系统剪贴板获取UnicodeText格式的数据;如果没有则返回空字符串。 |
| `SetText` | 将UnicodeText格式的数据存储到系统剪贴板。 |
### 1.2 示例实现
下面通过一个示例来演示这些功能。在现有项目中添加一个名为`ClipDemo`的用户控件,使用`RichTextBox`创建一个便签本,并添加两个按钮来实现从便签本复制和粘贴到便签本的功能。以下是该控件的XAML代码:
```xml
<UserControl x:Class="chapter7.ClipDemo"
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"
mc:Ignorable="d"
d:DesignHeight="600" d:DesignWidth="600">
<StackPanel HorizontalAlignment="Center">
<Border BorderBrush="Black" BorderThickness="2"
Height="600" Width="600" Margin="2">
<StackPanel x:Name="stp2" Height="600" Width="500">
<TextBlock Text="Scratch Pad"
HorizontalAlignment="Center"
FontWeight="Bold" FontSize="14" Margin="2"/>
<StackPanel Orientation="Horizontal"
HorizontalAlignment="Center">
<Button x:Name="btnCopy"
Content="Copy from Scratch Pad"
Margin="10" Height="25" Width="150"
Click="btnCopy_Click"/>
<Button x:Name="btnPaste"
Content="Paste to Scratch Pad"
Margin="10" Height="25" Width="150"
Click="btnPaste_Click"/>
</StackPanel>
<RichTextBox
Name="richTextArea"
Background="WhiteSmoke"
Cursor="Stylus"
FontFamily="Portable User Interface"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto"
MinHeight="500" MaxHeight="500"
MinWidth="500" MaxWidth="500" />
</StackPanel>
</Border>
</StackPanel>
</UserControl>
```
需要注意的是,`RichTextBox`控件本身具有复制/粘贴功能,可使用`Ctrl + C`复制信息,`Ctrl + V`粘贴信息。这里只是通过实现自定义的复制/粘贴功能来演示剪贴板API。
接下来,在代码后台实现两个按钮的点击事件:
```csharp
private void btnCopy_Click(object sender, RoutedEventArgs e)
{
if (!String.IsNullOrEmpty(richTextArea.Selection.Text))
Clipboard.SetText(richTextArea.Selection.Text);
else
MessageBox.Show("No Text is selected to copy");
}
private void btnPaste_Click(object sender, RoutedEventArgs e)
{
if (Clipboard.ContainsText())
{
Run insertText = new Run();
insertText.Text = Clipboard.GetText();
richTextArea.Selection.Insert(insertText);
}
else
MessageBox.Show("No Text available to paste");
}
```
在`btnCopy_Click`事件中,首先检查`RichTextBox`控件中是否有文本被选中。如果有,则使用`Clipboard.SetText`方法将文本存储到系统剪贴板;如果没有,则使用`MessageBox`通知用户。
在`btnPaste_Click`事件中,首先使用`Clipboard.ContainsText`方法检查系统剪贴板中是否有UnicodeText格式的文本。如果有,则使用`Clipboard.GetText`方法获取文本并插入到当前光标位置;如果没有,则使用`MessageBox`通知用户。
运行项目后,就可以将选中的文本复制到系统剪贴板,并粘贴回便签本或其他应用程序(如记事本或Microsoft Word)。同样,从任何外部应用程序或本应用程序复制到系统剪贴板的文本也可以插入到便签本中。
## 2. Silverlight应用程序的全球化和本地化
全球化和本地化的实现对于任何企业级全球业务应用程序的成功都起着至关重要的作用。自Silverlight 2起,Silverlight就支持应用程序的全球化和本地化。Silverlight 4通过支持双向文本并增加对更多语言(包括从右到左的语言)的支持,扩展了这些功能。在设计、开发和部署Silverlight应用程序时,企业必须考虑本地化因素。
### 2.1 全球化
任何全球应用程序都必须支持具有不同文化和需求的全球多元化用户群体的要求。全球化是指在应用程序设计和开发过程中,将特定于本地文化的要求(如用户界面设计中的本地语言支持,以及数据表示中的本地数字、货币和日期格式支持)纳入其中。
#### 2.1.1 `CultureInfo`类
Silverlight使用传统的.NET Framework技术来支持全球化功能。可以使用`System.Globalization`命名空间中的`CultureInfo`类来检索特定文化的信息。`CultureInfo`类提供了诸如语言代码 - 区域代码(例如,英语和美国区域的`en-US`)、字符集、货币符号以及数字和日期(日历)格式等特定于文化的信息。
`CultureInfo`类的关键属性如下表所示:
| 属性 | 类型 | 描述 |
| --- | --- | --- |
| `Calendar` | `System.Globalization.Calendar` | 获取该文化使用的默认日历。 |
| `CurrentCulture` | `System.Globalization.CultureInfo` | 获取表示当前线程使用的文化的`CultureInfo`对象。 |
| `CurrentUICulture` | `System.Globalization.CultureInfo` | 获取表示资源管理器在运行时用于查找特定于文化的资源的当前文化的`CultureInfo`对象。 |
| `DateTimeFormat` | `System.Globalization.DateTimeFormatInfo` | 定义`DateTimeFormatInfo`对象,详细说明将日期和时间转换为字符串的符合文化习惯的格式。 |
| `DisplayName` | `string` | 以本地化版本的.NET Framework语言获取格式为“语言 (国家/地区)”的文化名称。 |
| `EnglishName` | `string` | 以英语获取格式为“语言 (国家/地区)”的文化名称。例如,文化“en-US”的`EnglishName`显示为“English (United States)”。 |
| `InvariantCulture` | `System.Globalization.CultureInfo` | 获取与文化无关(不变)的`CultureInfo`。 |
| `Name` | `string` | 获取格式为“语言代码 - 国家/地区代码”的文化名称。例如,文化“en-US”的`Name`表示为“en-US”。 |
| `NativeName` | `string` | 获取该文化的本地名称,包括语言、国家/地区以及可选的脚本,该文化将以该名称显示。 |
| `NumberFormat` | `System.Globalization.NumberFormatInfo` | 定义`NumberFormatInfo`对象,该对象定义了将数字、货币值和百分比转换为字符串的符合文化习惯的格式。 |
| `Parent` | `System.Globalization.CultureInfo` | 获取表示当前`CultureInfo`的父文化的`CultureInfo`。例如,`zh-Hant`文化(中文文化)是`zh-HK`(中国香港特别行政区)、`zh-MO`(中国澳门特别行政区)和`zh-TW`(中国台湾)文化的父文化。 |
#### 2.1.2 示例开发
在现有项目中创建一个名为`CultureInfoDemo`的新用户控件,用于检索和显示本地机器的当前文化、UI文化和不变文化信息。在XAML代码中添加一个`TextBlock`控件来显示检索到的文化信息。代码后台也非常简单,如下所示:
```csharp
public CultureInfoDemo()
{
InitializeComponent();
```
0
0
复制全文
相关推荐









