2012-05-11 7 views
0

のControlTemplateに制御を変更し、ControlTemplateのは、次のように:取得し、私はXAMLで働いています

<ControlTemplate TargetType="{x:Type local:MyControl}" x:Key="MyControlTemplate"> 

    <Grid Background="Transparent" Name="DisplayGrid" > 


     <local:MyDisplay x:Name="DisplayInstance" /> 
     <ContentPresenter /> 


    </Grid> 

</ControlTemplate> 

コード:

public class MyControl : UserControl 
{ 

    .... 
    .... 
    .... 
    public MyControl() 
    { 
     Template = (ControlTemplate)Resources["MyControlTemplate"]; 

     MyDisplay display = Template.FindName("DisplayInstance", this); 
     // It return null 
    } 


} 

は、私は「DisplayInstance」を取得し、設定したいと思いますテンプレート。 (Template.FindName(string、FrameworkElement)を使用して)公式のメソッドを試しましたが、常にnullが返されます。

ControlTemplate/Xamlの "DisplayInstance"と他のコントロールを取得して変更するにはどうすればよいですか? ControlTemplateの内容が実行時に変更されるようにします。

ありがとうございます。

答えて

0

カスタムコントロールでOnApplyTemplateメソッドをオーバーライドし、名前付きコントロールに依存するコードを配置します。例:try:

public override void OnApplyTemplate() { 
     base.OnApplyTemplate(); 

     MyDisplay display = Template.FindName("DisplayInstance", this); 
    } 
関連する問題