0

私は次のようにxamlとControlTemplateを使用しています。

<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の内容が実行時に変更されるようにします。

ありがとうございました。

4

1 に答える 1

0

カスタム コントロールでOnApplyTemplateメソッドをオーバーライドし、名前付きコントロールに依存するコードをそこに配置します。例えば試してみてください:

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

        MyDisplay display = Template.FindName("DisplayInstance", this); 
    }
于 2012-05-11T03:44:16.620 に答える