我有这个 ControlTemplate 包含我希望能够以编程方式访问的东西(在这种情况下是渐变),经过数小时的反复试验,我觉得终于是时候向你寻求帮助了,StackOverflow。
模板生成了一朵花,我不知道该用什么,所以我只选择了拇指元素,因为我以前以类似的方式使用过它。如果您能想到其他更适合的方法,请告诉我。
无论如何,这是我的 ControlTemplate 的开始,来自 XAML 文件:
<ControlTemplate x:Key="cherryFlowerStyle" TargetType="{x:Type Thumb}">
<Viewbox Width="119.560" Height="114.268" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Canvas Width="119.560" Height="114.268">
<Canvas>
<!-- Layer 1/<Path> -->
<Path Data="... (removed to save space) ...">
<Path.Fill>
<RadialGradientBrush x:Name="cherryFlowerColorGradient" MappingMode="Absolute" GradientOrigin="593.380,333.416" Center="593.380,333.416" RadiusX="36.460" RadiusY="36.460">
<RadialGradientBrush.GradientStops>
<!-- Flower color -->
<GradientStop x:Name="cherryFlowerColorGradientOuterColor" Offset="0.15" Color="#ffd6e062"/>
这就是我在 C# 中所做的:
Thumb flower = new Thumb();
flower.Template = TryFindResource("cherryFlowerStyle") as ControlTemplate;
GradientStop grStop = (GradientStop)flower.Template.FindName("cherryFlowerColorGradientOuterColor", flower);
Console.WriteLine("gradient: " +grStop);
创建一个新的拇指并应用模板工作(它在画布上画成一朵花)。但是,尝试访问模板内的渐变是行不通的。我希望有一个好的解决方案,否则我必须以丑陋的方式去做;在屏幕外创建一朵花(在 XAML 中)并在代码隐藏中引用它,因为它有效:/
提前致谢!