2011-08-04 11 views
0

私はリソース内でコントロールを取得したいと考えています。それは私にとっては難しいことです。WPF:リソース内のコントロールを見つける

1.リソース(XAML)

<Span x:Key="spanParagrahTitle" x:Shared="false"> 
    <InlineUIContainer BaselineAlignment="Center"> 
     <dgWPFCtrl:IconButton x:Name="ibtnAddToFavorite" Cursor="Hand" IsPressible="True"/> 
    <InlineUIContainer BaselineAlignment="Center"> 
</Span> 

2.コード

Span myTitle = (Span)appRes["spanParagrahTitle"]; 
IconButton ibtnAddToFavorite = (IconButton)myTitle.FindName("ibtnAddToFavorite"); 

どのように私は、XAMLでibtnAddToFavoriteを制御得ることができますか?原因の 、FindNameが失敗しました。 (nullを返します)

ps IconButtonはユーザーコントロールです。

答えて

2

スパンをインスタンス化したら、VisualTreeHelperを使用してビジュアルツリーをドリルダウンし、アイコンボタンに移動することができます。

+0

おかげです。この問題を解決する最善の方法は、LogicalTreeHelper.FindLogicalNode()メソッドです。 – mjk6026

0

あなたが提供したコードから、dgWPFCtrl:IconButtonがリソースではありません。今度は「spanParagrahTitle」と呼ばれるリソースの一部であるInlineUIContainerの子

は、だからそれにアクセスする方法は私に手掛かりを与えるための

Span myTitle = (Span)appRes["spanParagrahTitle"]; 
IconButton ibtnAddToFavorite = ((InlineUIContainer)(myTitle.Content)).Content as IconButton; 
+0

することはできません。 SpanにはContentプロパティはありません。ありがとう。 – mjk6026