如果我有一个简单的用户控件Button
w /这样的背景......
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Red" Offset="1" />
<GradientStop Color="Black" Offset="0" />
</LinearGradientBrush>
有没有办法公开其中一个渐变停止,以便使用该控件的人只能修改第一个(例如Red
)并将渐变保持为Black
?
答案 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>