Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
偶然得知,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