1

我有一个数据模板的定义,如下所示:

<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属性的绑定。
  • 在我创建BlockItems 的代码中,如果我为每个 BlockItem 实例化一个新的 Brush(请记住,一次可能在画布上绘制了许多),这不会使它变得非常低效和缓慢吗?
4

1 回答 1

0

1)您可以将背景直接绑定到 BlockItem 上的画笔:

<Border Name="BlockBorder" Background="{Binding MyBackgroundBrush}"> 

2) 你可以绑定到一个静态资源,或者为你的 BlockItem 创建一个静态画笔。

Background="{StaticResource myStaticBrush}"
于 2011-11-29T13:59:54.423 回答