Создайте класс, полученный из Button, и переопределите Измерение, например,
public class SquareButton : Button
{
protected override Size MeasureOverride(Size constraint)
{
Size size = base.MeasureOverride(constraint);
size.Height = size.Width = Math.Max(size.Height, size.Width);
return size;
}
}
Затем вы можете использовать его примерно так:
<local:SquareButton
Content="i" Padding="2" Margin="0"
VerticalAlignment="Center"
HorizontalAlignment="Center">
<local:SquareButton.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Ellipse Fill="#FFF4F4F5" Stroke="#FF6695EB"/>
<ContentPresenter Margin="0"
RecognizesAccessKey="False"
SnapsToDevicePixels="True"
VerticalAlignment="Center"
HorizontalAlignment="Center"
/>
</Grid>
</ControlTemplate>
</local:SquareButton.Template>
</local:SquareButton>