ダイナミックに生成されたハイパーリンクがクリックされたときに、Lotus Notes文書を開く必要があります。私は以下のコードを使用してそれを行います。Silverlight InvalidOperationExceptionリンクをクリックしたとき
HyperlinkButton hlb = new HyperlinkButton();
hlb.SetBinding(HyperlinkButton.ContentProperty, new Binding("Properties[" + col.DisplayField + "]"));
hlb.SetBinding(HyperlinkButton.NavigateUriProperty, new Binding("Properties[" + col.LinkField + "]"));
hlb.Click += new RoutedEventHandler(hlb_Click);
RootGrid.Children.Add(hlb);
これは、リンクをクリックしたときに発生するコードです。
static void hlb_Click(object sender, RoutedEventArgs e)
{
HyperlinkButton hlb = (HyperlinkButton)sender;
var hostingWindow = HtmlPage.Window;
hostingWindow.Navigate(hlb.NavigateUri);
}
蓮のノート文書が正しく開きますが、私はのSystem.InvalidOperationExceptionを得るの詳細は
Description: Failed to navigate to notes://<path to the document>
Stacktrace:
at MS.Internal.NavigationHelper.Navigate(Boolean checkUserInitiatedAction)
at System.Windows.Controls.HyperlinkButton.OnClick()
at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
at System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
以下に示す注意すべきもう一つの興味深い点は、それが別のスレッドで発生していることであり、したがってhostingWindow.Navigateメソッドが起動されたときにキャッチされません。
アイデア?取り扱うようクリックイベントをマーキング
理由ではなく、通常のウェブアドレスに行くと、それは形式 ノートのある蓮のノートドキュメント(に行かなければならないということですドキュメント>)。 Silverlightでは、ハイパーリンクボタンのクリックは、この形式のターゲットURLでは機能しません。はい、コード内で例外が発生することは間違いありません。それは別のスレッドで発生するため、実際の呼び出しhostingWindow.Navigate(hlb.NavigateUri)ではなくApp.xaml.csにしかキャッチされません。それはナビゲーションを引き起こした。 –
ハイパーリンクボタンのように見える別のタイプのコントロールを使用して、イベントハンドラをクリックイベントに攻撃しないのはなぜですか。 – Bryant