C# Windows Phone 8超链接。单击事件不触发

C# Windows Phone 8超链接。单击事件不触发,c#,wpf,windows-phone-8,hyperlink,windows-phone,C#,Wpf,Windows Phone 8,Hyperlink,Windows Phone,我正在构建一个聊天应用程序,我正在解析出链接,并使用超链接将它们添加到聊天室视图中。这些超链接设置了以下事件处理程序: void urlLink_Click(object sender, RoutedEventArgs e) { try { Hyperlink link = sender as Hyperlink; this.chatUI.DisplayWebBrowser(link.Navigate

我正在构建一个聊天应用程序,我正在解析出链接,并使用超链接将它们添加到聊天室视图中。这些超链接设置了以下事件处理程序:

    void urlLink_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            Hyperlink link = sender as Hyperlink;
            this.chatUI.DisplayWebBrowser(link.NavigateUri);
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
        }
    }
不过,事件是否被触发似乎是随机的。单击时,某些链接将按预期工作,而某些链接将不工作。一些链接一开始可以工作,但在收到更多消息后,它们就停止工作。有人知道原因是什么以及如何解决吗?以下是创建超链接控件的方式:

newSpan = new Span();
Run urlRun = new Run();
urlRun.Text = urlMatches[i].Value;
Hyperlink urlLink = new Hyperlink();
urlLink.NavigateUri = new Uri(urlMatches[i].Value, UriKind.Absolute); // Add URI to the Hyperlink control
urlLink.Click += urlLink_Click; // Add event handler to control
urlLink.Inlines.Add(urlRun); // Add text to Hyperlink

我也有同样的问题。通过一些尝试和错误,我修复了它。。。通过将虚拟空命令指定给超链接。不要让我解释,我仍然不明白它是如何修复任何东西的,但就我而言,它确实做到了

首先,声明一个
DummyCommand
类:

/// <summary>
/// Workaround for the hyperlink click issue. What the hell is going on?
/// </summary>
public class DummyCommand : ICommand
{
    public bool CanExecute(object parameter)
    {
        return true;
    }

    public void Execute(object parameter)
    {
    }

    public event EventHandler CanExecuteChanged;
}

然后稍微搔搔你的头,接着做别的事情。

这很有效。我真的抓狂了,非常感谢库奇!也为我工作。未附加虚拟命令时,不会触发任何事件。但是当附加时,click事件和commands execute方法都会被激发。
newSpan = new Span();
Run urlRun = new Run();
urlRun.Text = urlMatches[i].Value;
Hyperlink urlLink = new Hyperlink();
urlLink.NavigateUri = new Uri(urlMatches[i].Value, UriKind.Absolute); // Add URI to the Hyperlink control
urlLink.Click += urlLink_Click; // Add event handler to control
urlLink.Command = new DummyCommand(); // Workaround for the Click not been triggered
urlLink.Inlines.Add(urlRun); // Add text to Hyperlin