实施例:
有两个控件:一个是600“像素”宽,另一个是200“像素”宽,直接显示在第一个下方,右边对齐。第一个控件的背景是在某些资源字典中定义的LinearGradientBrush
。
目标: 我希望第二个控件使其背景与第一个控件同步,使第二个控件看起来像第一个控件的扩展。
问题:
简单的背景绑定不是一个选项,因为第二个控件的背景会将LinearGradientBrush
拉伸超过200“像素”,而第一个控件将其拉伸超过600“像素”。
是的,我可以手动定义一个新的画笔,以便第二个控件匹配第一个,但如果我改变任何东西(控件大小,画笔),我将不得不再次手动更新第二个画笔。我想让背景自动同步。
LinearGradientBrush
是否有一个好的解决方案?
是否有适用于所有类型刷子的通用解决方案?
答案 0 :(得分:0)
以下是否适合您。 1个大控件包含所描述的两个。另一个控制填补了你的两个没有覆盖的空白空间。在两个控件上使用带有透明背景的设计背景的大容量控件。最后一个填充控件将使用绑定所有这些的父控件。希望有道理。 ;)
答案 1 :(得分:0)
如果控件之间的比例不变,则可以使背景"延伸到"通过调整偏移来控制,如下所示:
<Grid Width="700" Height="300">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<!-- Horizontal gradient -->
<Grid Width="600" Grid.Row="1" Grid.Column="1">
<Grid.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Color="Red" />
<GradientStop Color="Green" Offset="1" />
</LinearGradientBrush>
</Grid.Background>
</Grid>
<Grid Width="200" Grid.Row="2" Grid.Column="1" HorizontalAlignment="Right">
<Grid.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
<GradientStop Color="Red" Offset="-2" />
<GradientStop Color="Green" Offset="1" />
</LinearGradientBrush>
</Grid.Background>
</Grid>
<!-- Vertical gradient -->
<Grid Width="600" Grid.Row="3" Grid.Column="1">
<Grid.Background>
<LinearGradientBrush StartPoint="1,0" EndPoint="1,1">
<GradientStop Color="Blue" />
<GradientStop Color="Yellow" Offset="2" />
</LinearGradientBrush>
</Grid.Background>
</Grid>
<Grid Width="200" Grid.Row="4" Grid.Column="1" HorizontalAlignment="Right">
<Grid.Background>
<LinearGradientBrush StartPoint="1,0" EndPoint="1,1">
<GradientStop Color="Blue" Offset="-1" />
<GradientStop Color="Yellow" Offset="1" />
</LinearGradientBrush>
</Grid.Background>
</Grid>
</Grid>