Как получить ContentPresenter в коде позади? - PullRequest
2 голосов
/ 15 февраля 2012

У меня есть код ниже под Темы \ Generic.xaml

Теперь мне нужно получить cPresenter в коде, как я могусделать это?

На самом деле я пытаюсь преобразовать реализацию Silverlight в код WPF.И я хочу использовать что-то вроде Silverlight:

FrameworkElement cp = this.GetTemplateChild("cPresenter") as FrameworkElement;

Темы \ Generic.xaml

<Style TargetType="local:Marquee">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="local:Marquee">
                    <Border Background="{TemplateBinding Background}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            BorderThickness="{TemplateBinding BorderThickness}">    
                        <ScrollViewer Width="Auto" Height="Auto" HorizontalContentAlignment="Stretch" 
                             VerticalContentAlignment="Stretch" VerticalScrollBarVisibility="Disabled">
                            <Canvas>
                                <ContentPresenter  x:Name="cPresenter" VerticalAlignment="Center" HorizontalAlignment="Center"/>                            
                            </Canvas>
                        </ScrollViewer>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

1 Ответ

3 голосов
/ 15 февраля 2012

Нет причин, которые не должны работать и в WPF.Поместите это в свой код для Marquee.

private ContentPresenter cPresenter;

public override void OnApplyTemplate()
{
   base.OnApplyTemplate();
   this.cPresenter = this.GetTemplateChild("cPresenter") as ContentPresenter;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...