我有一个数据模板的定义,如下所示:
<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
名为的属性,Colour
它绑定到LinearGradientBrush
填充边框的第一种颜色,使其看起来像一个填充的矩形。
现在我并不总是希望线性渐变画笔来设置这个矩形的填充样式。例如,我的画布上的一些矩形可能需要用 SolidBrushes 填充。我考虑Brush
在类上创建一个属性BlockItem
而不是一个Color
属性并将整个绑定到该类Border.Background
,但是这样做有两个问题:
- 我不知道 XAML 应该如何指定与整个对象
Background
属性的绑定。 - 在我创建
BlockItem
s 的代码中,如果我为每个 BlockItem 实例化一个新的 Brush(请记住,一次可能在画布上绘制了许多),这不会使它变得非常低效和缓慢吗?