我有一个自定义控件ButtonRow
,最终会进入另一个控件。
非常简单,它有一个边框,标签和一个按钮。
我需要这样做,以便边框将扩展其宽度以填充按钮所在的位置。 这种情况不会发生,如下图所示:
XAML可以在下面找到。我试图摆弄标签和边框的水平对齐,但它们只会重新调整大小以适应标签的文本内容。
我知道存在非常相似的问题和名称的问题,但没有人需要做同样的事情或帮助我解决我的问题。
我尝试在水平对齐中使用StackPanel,但它只是让按钮转到边框旁边。
如何扩展边框以填充可用空间?
<Grid>
<DockPanel Height="Auto" HorizontalAlignment="Stretch" Margin="0" Name="dockPanel1" VerticalAlignment="Top" Width="Auto">
<Border BorderBrush="#FFDADFE1" Background="#FFECF0F1" BorderThickness="1" Height="20" Name="bdrFilter" HorizontalAlignment="Stretch">
<Label Content="Filter..." FontStyle="Italic" Foreground="#FF6C7A89" Height="20" Name="lblFilter" Padding="5,0" HorizontalContentAlignment="Stretch" HorizontalAlignment="Stretch" />
</Border>
<Button Style="{StaticResource FlatButtonStyle}" Content="+" Height="20" HorizontalAlignment="Right" Name="btnAddFilter" VerticalAlignment="Top" Width="20" Foreground="#FF6C7A89" ForceCursor="True" BorderBrush="{x:Null}" />
</DockPanel>
</Grid>
(按钮样式不影响其对齐或任何其他相关属性)
答案 0 :(得分:7)
DockPanel
不是用于此要求的正确Panel
...就像StackPanel
一样,它不调整其内容的大小。相反,只需使用常规Grid
(也使用比DockPanel
更少的资源):
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Border BorderBrush="#FFDADFE1" Background="#FFECF0F1" BorderThickness="1"
Height="20" Name="bdrFilter" VerticalAlignment="Top">
<Label Content="Filter..." FontStyle="Italic" Foreground="#FF6C7A89"
Height="20" Name="lblFilter" Padding="5,0" />
</Border>
<Button Grid.Column="1" Content="+" Height="20" HorizontalAlignment="Right"
Name="btnAddFilter" VerticalAlignment="Top" Width="20" Foreground="#FF6C7A89"
ForceCursor="True" BorderBrush="{x:Null}" />
</Grid>
有关WPF中不同Panel
的更多信息,请参阅MSDN上的Panels Overview页面。