プログラムでアクセスできるようにしたいもの (この場合はグラデーション) を含むこの ControlTemplate があり、何時間にもわたる試行錯誤の末、ようやく StackOverflow に支援を求める時が来たと感じています。
テンプレートは花を生成しますが、何を使用すればよいかわからなかったので、以前に同様の方法で使用したことがある Thumb 要素を選択しました。他にもっと適していると思われるものがあれば教えてください。
とにかく、これは XAML ファイルからの私の ControlTemplate の始まりです:
<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);
新しい Thumb を作成し、テンプレートを適用すると機能します (キャンバス上に花として描かれます)。ただし、テンプレート内のグラデーションにアクセスしようとしてもうまくいきません。これに対する良い解決策があることを願っています。(XAML で) 画面外に花を作成し、コード ビハインドでそれを参照します。
前もって感謝します!