Wp7nl 工具贡献






4.53/5 (5投票s)
Wp7nl 工具贡献
在构建 Windows Phone 应用时,我使用我自己的库。我是一个“懒惰”的开发者,不喜欢重复编写代码。因此,我将大量可重用的代码,如行为(behaviors)、转换器(converters)和扩展方法(extension methods),放在我的库中。一段时间以来,我一直在考虑将这个库作为开源项目分享到 Codeplex,但最终决定为 Joost van Schaik 的 Wp7nl Utilities 项目做出贡献。第一批实用工具已添加。我将继续添加更多,并在我的博客上进行介绍。
启动器的操作 (Actions for Launchers)
在我的应用程序中,我经常需要执行简单的触发器操作。例如,在 Internet Explorer 中打开一个 URL 或发送一封电子邮件。因为我大量使用 Blend(而且我就是很懒 ;)),我只是喜欢将一个操作拖放到一个按钮或文本块上,然后就完成了。操作和行为的优点在于你可以绑定属性,这使得它们在模板中非常有用。
目前,Windows Phone 启动器(Launchers)中只有少数几种可以用作触发器操作,但我相信这个列表会随着时间的推移而增长。如果您希望添加某种操作,请告诉我,我会尽力而为。
NavigateToUrlAction (导航到 URL 操作)
使用这些操作非常简单。围绕操作的代码对于所有操作来说几乎都是相同的,只有事件名称可能会有所不同。NavigateToUrlAction
执行一个 WebBrowserTask。它打开 `Url` 属性,这样你就可以绑定到它。作为一个小小的附加功能,它会检查网络连接是否可用,并在不可用时显示一条消息。这条消息也可以自定义。
<Button Content="Wp7nl" HorizontalAlignment="Left" VerticalAlignment="Top">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Tap">
<behaviors:NavigateToUrlAction Url="http://wp7nl.codeplex.com"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
SendEmailAction (发送邮件操作)
此操作执行 EmailComposeTask。可以绑定“To
”(收件人)、“Subject
”(主题)和“Body
”(正文)属性。
NavigatieToMarketplaceDetailAction (导航到应用商店详情页操作)
此操作执行 MarketPlaceDetailTask。它会打开应用商店并显示你的应用的详细信息。
NavigatieToReviewAction (导航到评论页操作)
让用户评论你的应用对于应用的成功至关重要。此操作执行 MarketplaceReviewTask,让用户非常容易地进行评论。
ShareLinkAction (分享链接操作)
在应用中分享链接是一项非常常见的任务。此操作执行 ShareLinkTask。这样你就可以利用手机的原生分享功能。可以绑定“LinkUri
”(链接 URI)、“Message
”(消息)和“Title
”(标题)属性。
Limit TextBox Behavior (限制文本框行为)
我遇到过需要限制用户输入字符数的情况。此行为只能与 TextBox
元素一起使用。你可以通过“MaxChars
”属性设置最大可输入字符数。作为一项附加功能,当达到最大字符数时,可以使手机轻微震动。
<TextBox x:Name="LimitedTextbox">
<i:Interaction.Behaviors>
<behaviors:LimitTextBoxBehavior MaxChars="25" Vibrate="True"/>
</i:Interaction.Behaviors>
</TextBox>
Visible On Locale Behavior (按区域设置显示行为)
VisibleOnLocaleBehavior
会将附加的元素设置为可见,前提是手机的当前 UI 语言与指定的两个字母 ISO 语言名称匹配,否则会隐藏它。当你有某些元素(如图片)是特定于语言的时,可以使用此行为。
<TextBlock Text="English" >
<i:Interaction.Behaviors>
<behaviors:VisibleOnLocaleBehavior LanguageCode="en"/>
</i:Interaction.Behaviors>
</TextBlock>
<TextBlock Text="Nederlands">
<i:Interaction.Behaviors>
<behaviors:VisibleOnLocaleBehavior LanguageCode="nl"/>
</i:Interaction.Behaviors>
</TextBlock>
Visibility In Trial Behavior (试用版模式下可见性行为)
VisibilityInTrialBehavior
会在应用处于试用模式时,将附加的元素设置为可见或折叠。附加元素是否可见或折叠由“Visibility
”属性决定。
<TextBlock Text="Not in trial mode">
<i:Interaction.Behaviors>
<behaviors:VisibilityInTrialBehavior Visibility="Collapsed"/>
</i:Interaction.Behaviors>
</TextBlock>
此行为利用了 TrialHelper
。这个辅助类用于检查应用是否处于试用模式。为了能够运行你的应用程序的试用模式,你可以在调试时添加“TRIAL
”作为条件编译符号来模拟。
Converters
我在 Wp7nl
库中添加了一些转换器。其中大多数都非常简单。
ObjectToStringValueConverter (对象转字符串值转换器)
让我们从最需要解释的那个开始。ObjectToStringConverter
用于创建对象的更美观的表示。在转换器参数中,将绑定对象属性放在 { }
之间。
以 Person
类为例。
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
当你希望 textblock
显示姓氏和名字,并用逗号分隔时,你可以直接将其添加到转换器参数中。
在此示例中,我在构造函数中直接将 mainpage
的 datacontext
设置为 person
类的一个新实例。在实际应用中你可能不会这样做,但你会明白我的意思。
public MainPage()
{
InitializeComponent();
DataContext = new Person{FirstName = "Larry", LastName = "Laffer"};
}
然后,我为 textblock
添加了一个 databinding
。
<TextBlock Text="{Binding ConverterParameter=\{LastName\}\, \{FirstName\},
Converter={StaticResource ObjectToStringValueConverter}}"/>
在 Blend 中创建绑定时,你不需要转义花括号,如下面的图片所示。
NullToCollapsedConverter (Null 转折叠转换器)
对于任何值为 null
、空字符串、仅包含空格或空 GUID 的值,返回 Visibility.Collapsed
。非常适合隐藏空白内容。例如,如果 URL 为空,你可能不想显示一个导航到 URL 的按钮。
StripHtmlValueConverter (去除 HTML 值转换器)
移除 string
中的所有 HTML 并将‘&XXXX
’解码为常规字符。当从 Twitter 或 Facebook 等外部服务请求数据时,数据通常会包含 HTML。这些 HTML 需要被转换为普通 string
或某种富文本块。此转换器执行第一项任务,即移除所有 HTML。<BR />
标签会被替换为换行符。
ToLowerValueConverter (转小写值转换器)
将 string
转换为全小写字符。对于标题很有用。
ToUpperValueConverter (转大写值转换器)
将 string
转换为全大写字符。对于标题很有用。