繁体   English   中英

更改模板中定义的控件属性

[英]Changing property of control defines in template

我想访问在MaterialDesignClock中定义的MaterialDesignClockBackgroundEllipse

访问Ellipse后,我需要更改BackgroundEllipse的不透明度。

下面的示例代码不起作用。

<materialDesign:Clock x:Name="MaterialTimePicker" Is24Hours="True" 
                    BorderThickness="0" >
    <materialDesign:Clock.Style>
        <Style>
            <Setter TargetName="BackgroundEllipse" Property="Opacity" Value="1" />
        </Style>
    </materialDesign:Clock.Style>
</materialDesign:Clock>

如果不复制整个模板并对其进行编辑,则无法更改 XAML 中模板中包含的EllipseOpacity Opacity的值被硬编码为0.23

您可以动态更改它:

private void MaterialTimePicker_Loaded(object sender, RoutedEventArgs e)
{
    Clock clock = (Clock)sender;
    Ellipse ellipse = clock.Template.FindName("BackgroundEllipse", clock) as Ellipse;
    if (ellipse != null)
    {
        ellipse.Opacity = 1.0;
    }
}

XAML:

<materialDesign:Clock x:Name="MaterialTimePicker" Is24Hours="True" BorderThickness="0"
    Loaded="MaterialTimePicker_Loaded"/>

与复制模板的 XAML 解决方案相比,这需要的标记要少得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM