对 ControlTemplate 内控件的引用

Ken*_*sen 5 c# wpf resources controltemplate

我如何在代码隐藏中形成我的构造函数以获取对下面 XAML 中 OuterBorder 控件的引用?

<Window Template="{DynamicResource WindowTemplate}">
    <Window.Resources>      
        <ControlTemplate x:Key="WindowTemplate" TargetType="{x:Type Window}">
            <AdornerDecorator>
                <Border Name="OuterBorder" Background="Black" BorderBrush="Red" BorderThickness="1" CornerRadius="0">
                    <!-- Implementation here... -->
                </Border>
            </AdornerDecorator>
        </ControlTemplate>
    </Window.Resources>
</Window>
Run Code Online (Sandbox Code Playgroud)

Arc*_*rus 4

两种可能的解决方案:

解决方案1

将 Loaded 事件放入 XAML

<Border Name="OuterBorder" Loaded="Border_Loaded" ...
Run Code Online (Sandbox Code Playgroud)

并在后面的代码中将其存储在私有字段中:

private Border border;

void Border_Loaded(object sender, RoutedEventArgs e)
{
    this.border = (Border)sender;
}
Run Code Online (Sandbox Code Playgroud)

或者:

解决方案2

覆盖窗口的 OnApplyTemplate:

private Border border;

public override void OnApplyTemplate()
{
    base.OnApplyTemplate();
    this.border = (Border) Template.FindName("OuterBorder", this);
}
Run Code Online (Sandbox Code Playgroud)