0

如果我有一个Button带有这样背景的简单用户控件......

<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
  <GradientStop Color="Red" Offset="1" />
  <GradientStop Color="Black" Offset="0" />
</LinearGradientBrush>

有没有办法暴露一个渐变停止,这样使用控件的人可以只修改第一个(例如Red)并将渐变保持为Black

4

1 回答 1

1

我假设您的意思是让用户将渐变停止颜色设置为他们自己的 XAML 的一部分?如果是这样,您可以使用 aDependencyProperty并将其绑定GradientStop.Color到它。

在 UserControl.cs 中:

    public CoolControl()
    {
        InitalizeComponent();
        SetValue(ColorProperty, Colors.Red); // or any default color
    }

    public static DependencyProperty ColorProperty = DependencyProperty.Register("BackgroundColor", typeof(Color), typeof(CoolControl)); // replace CoolControl with the name of your UserControl

    public Color BackgroundColor
    {
        get
        {
            return (Color)GetValue(ColorProperty);
        }
        set
        {
            SetValue(ColorProperty, value);
        }
    }

在 UserControl.xaml 中:

    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
        <GradientStop Color="{Binding BackgroundColor, RelativeSource={RelativeSource AncestorType={x:Type my:CoolControl}}}" Offset="1" /> <!-- replace my:CoolControl with your namespace declaration and UserControl name -->
        <GradientStop Color="Black" Offset="0" />
    </LinearGradientBrush>

使用控件:

    <Grid>
        <my:CoolControl BackgroundColor="Blue" />
    </Grid>
于 2013-01-04T17:46:04.210 回答