0
에서 나는 보이는 데이터 템플릿에 대한 정의가 있습니다동적 브러쉬 XAML
<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
는 첫 번째 색상에 바인딩 Colour
라는 유형 Color
의 속성을 가지고 LinearGradientBrush
은 테두리를 채우며 채워진 사각형처럼 보입니다.
이제 Linear Gradient Brushes가이 사각형의 채우기 스타일을 지정하는 것은 아닙니다. 내 캔버스의 일부 직사각형은 예를 들어 SolidBrushes로 채워 져야 할 수 있습니다. 내가 대신 Color
속성의 BlockItem
클래스에 Brush
속성을 만들고 그것 전체 Border.Background
결합으로 간주하지만,이 문제는이에있다 :
- 나는 XAML이를 지정하는 보여야 방법을 모른다 전체 개체
Background
속성에 바인딩 BlockItem
을 생성하는 코드에서 모든 단일 BlockItem에 대해 새 브러시를 인스턴스화하면 (실제로 염두에 둬야합니다. 한 번에 여러 개의 캔버스가 그려지는 경우가 있습니다),이 작업이 실제로 비효율적이며 느려지지는 않을까요?