WPF UserControl修改渐变部分

时间:2013-01-04 17:13:03

标签: c# wpf button user-controls gradient

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

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

有没有办法公开其中一个渐变停止,以便使用该控件的人只能修改第一个(例如Red)并将渐变保持为Black

1 个答案:

答案 0 :(得分:1)

我认为你的意思是让用户将渐变停止颜色设置为他们自己的XAML的一部分?如果是这样,您可以使用DependencyProperty并将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>