×
Namespaces

Variants
Actions

Codeing4Fun控件解析(Prompt系列)

From Nokia Developer Wiki
Jump to: navigation, search
WP Metro Icon UI.png
SignpostIcon WP7 70px.png
Article Metadata

代码示例
兼容于
文章
WS - OtomiiLu 在 12 Sep 2012 创建
最后由 hamishwillee 在 02 Jul 2013 编辑

在Windows Phone 7的开发中,我们不仅仅拥有微软官方提供的原始的控件,还有CodePlex提供的一套Toolkit.但是,在日常开发中,这些控件往往是不够的,这里,我将会讨论如何使用另外一套第三方控件Coding4Fun.

Coding4Fun也是一套很有名的控件,他追寻的是Microsoft Public License (Ms-PL), MS-PL 授权使用者可以自由修改、重制与散布该软体. 那么接下来,我们就进行这个控件的介绍:

Contents

引用控件

首先,我建议使用NuGet来安装整个控件. 打开Tools->Extension Manager->Online,在搜索框中输入NuGet,然后Download.

InstallNuGet.JPG

然后重启VS, 打开View->Other Windows->Package Manager Console. 在打开的Window中输入:

Install-Package Coding4Fun.Phone.Controls.Complete即可完成控件的引用,你会获得以下数据:

PM> Install-Package Coding4Fun.Phone.Controls.Complete
正在尝试解析依赖项“Coding4Fun.Phone.Audio”。
正在尝试解析依赖项“Coding4Fun.Phone.Net”。
正在尝试解析依赖项“Coding4Fun.Phone.Storage”。
正在尝试解析依赖项“Coding4Fun.Phone.Controls”。
正在尝试解析依赖项“Coding4Fun.Phone.Controls.TimeSpan”。
正在尝试解析依赖项“SilverlightToolkitWP”。
已成功安装“Coding4Fun.Phone.Audio 1.6.1”。
已成功安装“Coding4Fun.Phone.Net 1.6.1”。
已成功安装“Coding4Fun.Phone.Storage 1.6.1”。
已成功安装“Coding4Fun.Phone.Controls 1.6.1”。
已成功安装“SilverlightToolkitWP 4.2012.6.25”。
已成功安装“Coding4Fun.Phone.Controls.TimeSpan 1.6.1”。
已成功安装“Coding4Fun.Phone.Controls.Complete 1.6.1”。
已成功将“Coding4Fun.Phone.Audio 1.6.1”添加到 Coding4FunDemoInOne。
已成功将“Coding4Fun.Phone.Net 1.6.1”添加到 Coding4FunDemoInOne。
已成功将“Coding4Fun.Phone.Storage 1.6.1”添加到 Coding4FunDemoInOne。
已成功将“Coding4Fun.Phone.Controls 1.6.1”添加到 Coding4FunDemoInOne。
已成功将“SilverlightToolkitWP 4.2012.6.25”添加到 Coding4FunDemoInOne。
已成功将“Coding4Fun.Phone.Controls.TimeSpan 1.6.1”添加到 Coding4FunDemoInOne。
已成功将“Coding4Fun.Phone.Controls.Complete 1.6.1”添加到 Coding4FunDemoInOne。

同时,Coding4Fun还有另外几种命令,区别于Complete安装: 一种是不包括TimeSpan的: Install-Package Coding4Fun.Phone.Controls 一种是只有TimeSpan的: Install-Package Coding4Fun.Phone.Controls.TimeSpan

AboutPrompt控件

AboutPrompt控件实际就是一个弹出控件,当我们需要说明一些东西的时候,我们可以直接使用这个控件弹出我们需要的内容. 首先,是默认的一些属性,具体如下所示:

        private void BtnAboutPrompt_Click(object sender, RoutedEventArgs e)
{
AboutPrompt about = new AboutPrompt();
about.Title = "标题";
about.Footer = "页角";
about.VersionNumber = "版本号";
about.WaterMark = "水印";
about.Body = new TextBlock { Text = "我是内容!我是内容!我是内容!我是内容!我是内容!",
TextWrapping = TextWrapping.Wrap };
about.Completed += (ss, ee) => {
//添加一些完成代码
} ;
about.Show();
}

截图:

AboutPrompt.JPG

当然,里面的Body是object类型的,我们可以给予他所有的类型,比如一个自定义的UserControl. 具体如下所示: 创建一个AboutPromptBody.xaml的UserControl,然后添加以下代码:

<UserControl x:Class="Coding4FunDemoInOne.AboutPromptBody"
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"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
d:DesignHeight="480" d:DesignWidth="480">
 
<Border BorderBrush="Red" BorderThickness="2">
<StackPanel x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}">
<TextBlock Text="我是文本"/>
<TextBlock Text="我是文本"/>
<TextBlock Text="我是文本"/>
<Border Background="Red" Height="100" Width="400">
<TextBlock Text="我是文本" VerticalAlignment="Center"/>
</Border>
</StackPanel>
</Border>
</UserControl>

然后,我们添加到我们的主程序中:

        private void BtnAboutPromptUserControl_Click(object sender, RoutedEventArgs e)
{
AboutPrompt about = new AboutPrompt();
about.Title = "标题";
about.VersionNumber = string.Empty;
about.Body = new AboutPromptBody();
about.Show();
}

截图:

AboutPromptUserControl.JPG

好了,发现我们自定义的界面出现在了程序上.

InputPrompt

InputPrompt控件是一个非常实用的控件,当我们需要用户输入信息的时候,且没有这个信息,我们无法进行下去的时候,我们经常会弹出一个文本框让用户输入,而InputPrompt控件简单明了的给我提供了这个功能. 我们先来看代码:

        private void BtnInputPrompt_Click(object sender, RoutedEventArgs e)
{
InputPrompt input = new InputPrompt();
input.Completed += (ss, ee) =>
{
MessageBox.Show("您输入的是 : " + ee.Result);
};
input.Value = "请输入数字!";
input.Background = new SolidColorBrush(Colors.DarkGray);
input.Overlay = new SolidColorBrush(Colors.LightGray);
input.Title = "Title";
input.Message = "Message";
input.InputScope = new InputScope { Names = { new InputScopeName() { NameValue = InputScopeNameValue.Number } } };
input.Show();
}

通过以上代码,我们就可以弹出我们的文本框了,然后通过Completed事件,获取我们需要的内容.同时,我们通过InputScope选择输入键盘的类型. 截图:

InputPrompt.JPG

很简单的,我们有了可以输入内容的弹出框.

MessagePrompt

MessagePrompt就是一个简单的信息提醒,代码如下所示

        private void BtnMessagePrompt_Click(object sender, RoutedEventArgs e)
{
var messagePrompt = new MessagePrompt();
messagePrompt.Title = "标题";
messagePrompt.Message = "信息";
messagePrompt.IsAppBarVisible = true;
messagePrompt.IsCancelVisible = true;
Button customButton = new Button() { Content = "自定义按钮" };
customButton.Click += (ss, ee) => {
MessageBox.Show("已经点击自定义按钮");
//messagePrompt.Hide();
//messagePrompt = null;
};
messagePrompt.ActionPopUpButtons.Add(customButton);
messagePrompt.Completed += (ss, ee) =>
{
MessageBox.Show("您按了 : " + ee.PopUpResult);
};
messagePrompt.Show();
}

截图:

MessagePrompt.JPG

同样的, MessagePrompt也可以使用累死AboutPromptUserControl设置Body的方式设置自定义内容. 只要简单的执行以下代码即可:

messagePrompt.Body = new BodyUserControl();

PasswordInputPrompt

PasswordInputPrompt实际就是InputPrompt和MessagePrompt的控件的组合体,具体代码如下:

        private void BtnPasswordInputPrompt_Click(object sender, RoutedEventArgs e)
{
PasswordInputPrompt passwordInput = new PasswordInputPrompt();
passwordInput.Title = "标题";
passwordInput.Message = "信息";
passwordInput.IsCancelVisible = true;
passwordInput.IsAppBarVisible = true;
passwordInput.Value = "Password01";
passwordInput.Background = new SolidColorBrush(Colors.DarkGray);
passwordInput.Overlay = new SolidColorBrush(Colors.LightGray);
Button customButton = new Button() { Content = "自定义按钮" };
customButton.Click += (ss, ee) => { };
passwordInput.ActionPopUpButtons.Add(customButton);
passwordInput.Completed += (ss, ee) => {
//添加一些完成代码
};
passwordInput.Show();
}

截图:

PasswordInputPrompt.JPG

ToastPrompt

ToastPrompt控件提供的是一种类似于Toast的一种通知方式,但是这是UI层的,并不是系统层,仅仅是一种模仿,具体的代码如下,

        private void BtnToastPrompt_Click(object sender, RoutedEventArgs e)
{
ToastPrompt toast = new ToastPrompt();
toast.Title = "标题";
toast.Message = "信息";
toast.FontSize = 40;
toast.TextOrientation = System.Windows.Controls.Orientation.Horizontal;
toast.Background = new SolidColorBrush(Colors.DarkGray);
toast.Overlay = new SolidColorBrush(Colors.LightGray);
toast.ImageSource = new BitmapImage(new Uri("ApplicationIcon.png", UriKind.RelativeOrAbsolute));
toast.Completed += (ss, ee) => { };
toast.Show();
}

截图:

ToastPrompt.JPG

结论

这个控件的Prompt系列控件几乎涵盖了所有的弹出内容,希望可以帮助到您. 最后,附上项目源代码和截图,希望可以帮到您:

File:Coding4FunDemoInOne.zip

Coding4FunInOneCapture.JPG

This page was last modified on 2 July 2013, at 08:51.
120 page views in the last 30 days.