У меня есть пользовательский элемент управления с этим макетом:
<Border x:Name="PART_OuterBorder"
CornerRadius="1000"
BorderThickness="3"
BorderBrush="Black">
<Border.Background>
<RadialGradientBrush>
<RadialGradientBrush.GradientStops>
<GradientStop Offset="0" Color="#438F40"/>
<GradientStop Offset="0.95" Color="#0D441D"/>
<GradientStop Offset="2" Color="#106E42"/>
</RadialGradientBrush.GradientStops>
</RadialGradientBrush>
</Border.Background>
<Border x:Name="PART_InnerBorder"
CornerRadius="1000">
<Border.Background>
<RadialGradientBrush>
<RadialGradientBrush.GradientStops>
<GradientStop Offset="0" Color="#333439"/>
<GradientStop Offset="1.5" Color="#000"/>
</RadialGradientBrush.GradientStops>
</RadialGradientBrush>
</Border.Background>
<userControls:DraggableElement x:Name="PART_DraggableElement"
Width="16" Height="16"/>
</Border>
</Border>
Как видите, я не устанавливал ширину и высоту для двух границ и использовал элемент управления в строке сетки:
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="1.5*"/>
<RowDefinition/>
</Grid.RowDefinitions>
<customControls:myCustomControl Grid.Row="1" HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"/>
</Grid>
Но размер элемента управления не изменяется при изменении размера окна. Кстати, он фиксирует свой размер, если я помещаю его в меньшую или большую ячейку сетки, это единственный раз, когда он фиксирует свой размер.
Также я рассматривал возможность использования ViewBox в качестве родителя границ в шаблоне моего пользовательского элемента управления, но это меняет весь макет:
Нормальный:
с ViewBox: