加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – WPF如何扩展边框宽度以填充DockPanel中的可用空间

发布时间:2020-12-16 02:02:45 所属栏目:百科 来源:网络整理
导读:我有一个自定义控件ButtonRow,最终将进入一个不同的控件. 它很简单,它有一个边框,标签和一个按钮. 我需要这样做,以便边框将扩展其宽度以填充按钮所在的位置. 这种情况不会发生,如下图所示: XAML可以在下面找到.我试图摆弄标签和边框的水平对齐,但它们只会重
我有一个自定义控件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>

(按钮样式不会影响其对齐或任何其他相关属性)

解决方法

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页面.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读