我有一个数据模板的定义,如下所示:
<DataTemplate DataType="{x:Type HeatMap:BlockItem}">
<Grid Visibility="{Binding IsVisible}">
<Border Name="BlockBorder" Width="{Binding Width}" Height="{Binding Height}">
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="{Binding Colour}" Offset="1"/>
<GradientStop Color="White"/>
</LinearGradientBrush>
</Border.Background>
</Border>
</Grid>
</DataTemplate>
可以看出,BlockItem
有一个名为Color
的{{1}}类型的属性,该属性绑定到填充边框的Colour
的第一种颜色,使其成为看起来像一个填充的矩形。
现在我并不总是希望使用线性渐变笔刷来设置此矩形的填充样式。例如,我的画布上的某些矩形可能需要填充SolidBrushes。我考虑在LinearGradientBrush
类而不是Brush
属性上创建BlockItem
属性,并将整个Color
绑定到该属性,但是有两个问题:
Border.Background
属性的绑定。Background
的代码中,如果我为每个BlockItem实例化一个新的Brush(请记住,一次可能在画布上绘制很多),这不会真的低效而缓慢?答案 0 :(得分:0)
1)您可以将Background直接绑定到BlockItem上的画笔:
<Border Name="BlockBorder" Background="{Binding MyBackgroundBrush}">
2)您可以绑定到静态资源,或为BlockItem创建静态画笔。
Background="{StaticResource myStaticBrush}"