更改silverlight中的背景画刷属性后,为什么背景会自动改变?

代码如下:<UserControl.Resources><LinearGradientBrushx:Key="bgbrush"><GradientStopOffset="... 代码如下:
<UserControl.Resources>
<LinearGradientBrush x:Key="bgbrush">
<GradientStop Offset="0.00" Color="Yellow" />
<GradientStop Offset="0.50" Color="White" />
<GradientStop Offset="1.00" Color="Purple" />
</LinearGradientBrush>
</UserControl.Resources>

<Grid x:Name="grid1" MouseLeftButtonDown="grid1_MouseLeftButtonDown" Background="{StaticResource bgbrush }">
.................
</Grid>
</UserControl>
我设置了Grid的背景画刷,然后在鼠标左键下按的事件里更改画刷的属性:
private void grid1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
LinearGradientBrush brush = (LinearGradientBrush)this.Resources["bgbrush"];
Color color = brush.GradientStops[0].Color;
brush.GradientStops[0].Color = brush.GradientStops[2].Color;
brush.GradientStops[2].Color = color;
}
然后Grid的背景就自动变了,我不明白的是这里面有什么机制导致更改了画刷属性后,Grid会自动重绘呢?而不是像vc里面一样,要用程序刷新绘制区域才会看到新的效果。恳请高手解惑啊!
展开
 我来答
盐水肉西瓜
2014-01-24 · TA获得超过210个赞
知道小有建树答主
回答量:217
采纳率:0%
帮助的人:233万
展开全部
Background 的类型是 Brush , Brush的基类是DependencyObject
DependencyObject中有SetValue方法,这个方法在赋值的同时会触发 OnPropertyChanged 事件,告诉客户程序更新UI, 神奇的地方都在DependencyObject里面
百度网友e812ba6
2014-01-20
知道答主
回答量:8
采纳率:0%
帮助的人:3.4万
展开全部
x:Key="bgbrush"相当于你已经声明实例了一个对象,你修改对象的值,也就修改到相关引用对象的地方
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式