学用Windows Phone 8中Hyperlink和Command
偶然得知,Windows 8.1中把Hyperlink加到了XAML中去了,这使我想到Windows Phone中也早已把相同的元素加进去,但是罕有文档说明。
接下来,我将演示一下,如何在Windows Phone 8中通过Hyperlink来实现导航和激活事件。
首先,我们需要在Visual Studio中新建一个Windows Phone的工程,并加入以下XAML:
1: <TextBlock x:Name="tb1"></TextBlock>
2: <RichTextBox>
3: <Paragraph>
4: <Hyperlink>First Link</Hyperlink>
5: Some Text
6: <Hyperlink>Second Link</Hyperlink>
7: </Paragraph>
8: </RichTextBox>
现在,按下F5启动调试,这里我们能看到界面中有两个超链接存在。下面,我们在一个链接中加URL,在另外一个链接中添加一个事件。
1: <TextBlock x:Name="tb1"></TextBlock>
2: <RichTextBox>
3: <Paragraph>
4: <Hyperlink NavigateUri="/Page1.xaml">First Link</Hyperlink>
5: Some Text
6: <Hyperlink Click="Hyperlink_Click">Second Link</Hyperlink>
7: </Paragraph>
8: </RichTextBox>
最后,我们演示一下Hyperlink.Command。这个Command是一个激活动作,而不是一个绑定在按钮上的事件。在这里,我们需要给它绑定一个动作:
1: <TextBlock x:Name="tb1"></TextBlock>
2: <RichTextBox>
3: <Paragraph>
4: <Hyperlink CommandParameter="First Link" Command="{Binding HyperLinkTapped}">First Link</Hyperlink>
5: Some Text
6: <Hyperlink CommandParameter="Second Link" Command="{Binding HyperLinkTapped}">Second Link</Hyperlink>
7: </Paragraph>
8: </RichTextBox>
在Model模型中去定义一个动作是很灵活的一件事情,并且可以在不同的模型实例中动态的去运行一个动作。不过,最重要的一步,还是需要去完成对ICommand的继承。下面是一段示例代码:
1: public class MyCommand : ICommand
2: {
3: private Action<object> _execute;
4:
5: public MyCommand(Action<object> action)
6: {
7: _execute = action;
8: }
9:
10: public bool CanExecute(object parameter)
11: {
12: return true;
13: }
14:
15: public event EventHandler CanExecuteChanged;
16:
17: public void Execute(object parameter)
18: {
19: _execute(parameter);
20: }
21: }
如果我们需要在后台代码中去绑定Command的话,我们还需要MyCommand属性。并且还需要去定义MyCommand动作:
1: public MyCommand HyperLinkTapped { get; set; }
2:
3: // Constructor
4: public MainPage()
5: {
6: InitializeComponent();
7:
8: HyperLinkTapped = new MyCommand(Executed);
9:
10: Title = "abe";
11:
12: // Sample code to localize the ApplicationBar
13: //BuildLocalizedApplicationBar();
14: }
15:
16: private void Executed(object parameter)
17: {
18: tb1.Text = parameter.ToString();
19: }
到这里我们已经演示了在Windows Phone中最基本的Hyperlink的使用。接下来,我这里将会展示更多的关于MVVM的使用细节。
English Version:https://blogs.msdn.com/b/lighthouse/archive/2013/09/06/beginning-with-hyperlink-and-command-in-windows-phone.aspx