У меня есть определение для шаблона данных, которое выглядит следующим образом:
<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
, но с этим есть 2 проблемы:
- Я надеваюне знаю, как должен выглядеть XAML для указания привязки ко всему свойству объекта
Background
. - В коде, где я создаю
BlockItem
s, если я создаю новую Brush для каждого отдельного BlockItemпомните, что на холсте одновременно может быть нарисовано много людей), разве это не сделает его действительно неэффективным и медленным?