以前の質問で、kbmax は、generic.xaml でカスタム プロパティをバインドする方法を教えてくれました。この回答は、テンプレートバインディングを使用したボーダー背景の設定にありました
LinearGradientBrush StartPoint でこれを実行しようとするまではうまくいきました。例を次に示します。
これは明らかにうまくいきます:
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
次のようにカスタム プロパティにバインドしたいと思います。これは機能しません。プロパティを何に設定しても、常に左から右へのグラデーションになります。
<LinearGradientBrush StartPoint="{Binding HeaderBorderGradientStartPoint, RelativeSource={RelativeSource TemplatedParent}}" EndPoint="{Binding HeaderBorderGradientEndPoint, RelativeSource={RelativeSource TemplatedParent}}">
これがクラスのコードです。
public static readonly DependencyProperty HeaderBorderGradientStartPointProperty =
DependencyProperty.Register("HeaderBorderGradientStartPoint", typeof(Point), typeof(GalleryExpander), new PropertyMetadata(new Point(0.5,0)));
public Point HeaderBorderGradientStartPoint {
get { return (Point)GetValue(HeaderBorderGradientStartPointProperty); }
set { SetValue(HeaderBorderGradientStartPointProperty, value); }
}
public static readonly DependencyProperty HeaderBorderGradientEndPointProperty =
DependencyProperty.Register("HeaderBorderGradientEndPoint", typeof(Point), typeof(GalleryExpander), new PropertyMetadata(new Point(0.5,1)));
public Point HeaderBorderGradientEndPoint {
get { return (Point)GetValue(HeaderBorderGradientEndPointProperty); }
set { SetValue(HeaderBorderGradientEndPointProperty, value); }
}
<Border.BorderBrush>
<LinearGradientBrush StartPoint="{Binding HeaderBorderGradientStartPoint, RelativeSource={RelativeSource TemplatedParent}}" EndPoint="{Binding HeaderBorderGradientEndPoint, RelativeSource={RelativeSource TemplatedParent}}">
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0.0" Color="Transparent" />
<GradientStop Offset="0.25" Color="Transparent" />
<GradientStop Offset="0.50" Color="Transparent" />
<GradientStop Offset="0.75" Color="Transparent" />
<GradientStop Offset="1.0" Color="Transparent" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Border.BorderBrush>
方向性をありがとう...