トップ回答者
TreeViewにHyperlinkを入れて矢印キーで選択すると例外が発生する

質問
-
TreeViewについて質問させてください。
WPFのTreeViewはTreeViewItemの中に文字列だけでなくボタンなどのコントロールを入れることもできますが、
例えば以下のコードのように、
<TreeView> <TreeViewItem Header="NormalText"> <TreeViewItem Header="AAA"/> <TreeViewItem Header="BBB"/> </TreeViewItem> <TreeViewItem> <TreeViewItem.Header> <TextBlock><Hyperlink>LinkedText</Hyperlink></TextBlock> </TreeViewItem.Header> </TreeViewItem> </TreeView>
Hyperlinkを入れると、選択アイテムを変更するために矢印キーを押した瞬間
「'System.Windows.Documents.Hyperlink' は、Visual または Visual3D ではありません。」という例外が発生してしまいます。
しかし、マウスを使ってアイテムを選択したときやPgUp, PgDn, Home, Endキーで選択したときは例外が発生せず正常に動作します。
Button, CheckBox, RadioButton等のSystem.Windows.Controls系のコントロールはもちろん、
Bold, Underline, LineBreak等のHyperlink以外のSystem.Windows.Documents系のコントロールを入れたときもこのような現象は発生せず、
Hyperlinkを使ったときだけ例外が発生するようなのですが、他の方の環境でも再現するでしょうか?
また、どなたか回避する方法をご存じないでしょうか?
回答
すべての返信
-
こんにちは、フォーラムオペレーターの高橋春樹です。
Hongliangさん
いつもお世話になっております。vernicifluumさん、
MSDNフォーラムのご利用有難うございます。こちらでも調べたところ、US版MSDNフォーラムでも同じような投稿がありました。
InvalidOperationException: 'System.Windows.Documents.Hyperlink' is not a Visual or Visual3D
http://social.msdn.microsoft.com/forums/en-US/wpf/thread/5982cafe-f75b-42b4-99dc-50d3a81b30b0/
こちらではHyperlinkのFocusableプロパティをFalseにして対応してほしいとの事でした。
<Hyperlink Focusable="False">LinkedText</Hyperlink>
KeyboardNavigation.IsTabStopも確認しましたが、これでも回避出来るようですね。
今回、Hongliangさんからのアドバイスが有用な情報だと思いましたので、勝手ながら回答マークを付けさせてもらいました。今後ともMSDNフォーラムを宜しくお願いします。
マイクロソフト株式会社 フォーラム オペレーター 高橋春樹