我想有一个按钮与全宽和全高PathIcon
内(而不必手动设置Width
和Height
相同的像素值的按钮)。
根据文档,似乎将HorizontalAlignment
和VerticalAlignment
设置为"Stretch"
* 应该 * 可以使用以下方法(简体)XAML (我还尝试将按钮的HorizontalContentAlignment
和VerticalContentAlignment
属性设置为Stretch
,这两个属性都不正确。据我所知,在阿瓦隆尼亚文档中没有任何地方真正记录过,但IntelliSense提出了它们,它们似乎是相关的,soooo...:)
<Button Name="button"
Background="Cyan"
Width="50"
Height="50"
HorizontalContentAlignment="Stretch"
VerticalContentAlignment="Stretch"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<PathIcon Background="Red"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Name="normalIcon"
Data="{StaticResource copy}"/>
</Button>
导致这个结果:
可以看出,红色图标没有覆盖整个青色按钮。我三次检查任何Margin
s或Padding
s可能会干扰,但没有。
现在,显而易见的(也是相当丑陋的)解决方案是这样做:
<Button Name="button"
Background="Cyan"
Width="50"
Height="50">
<PathIcon Background="Red"
Width="50"
Height="50"
Name="normalIcon"
Data="{StaticResource copy}"/>
</Button>
实际上,我的按钮包含一个面板,其中包含几个可以有条件切换的图标(IsVisible="True/False"
),因此将Width
和Height
设置为所有图标的相同值是不实际的(特别是在将来必须更改这些值的情况下)。
我已经看过了像How to set width to 100% in WPF、How to get button content to fill width in WPF和WPF: Setting the Width (and Height) as a Percentage Value这样的问题,但它们似乎都不起作用(要么是因为我没有正确使用它们,要么是因为avaloniaui和wpf之间有太多的差异?)
我基本上想实现的是类似于这个CSS片段的东西
Button {
width: 50px;
height: 50px;
}
Button > Panel {
width: 100%;
height: 100%;
}
Button > Panel > PathIcon {
width: 100%;
height: 100%;
}
我也尝试过:
- Using a
DockPanel
and settingLastChildFill="True"
(不工作-虽然DockPanel
确实填充了按钮(* 无论如何大部分 *),但PathIcon
(dock面板的最后一个子面板)似乎并不关心它 * 应该 * 填充DockPanel
:| - Doing some trickery with
ControlTemplate
s(不起作用--我不会假装我知道我在做什么,也不会假装这是avaloniaui中的正确方法:P
1条答案
按热度按时间webghufk1#
按钮中的水平对齐
Screeshot