微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WPF在标签周围出现空白

如何解决WPF在标签周围出现空白

我在一个网格内有一个网格,里面有一个标签。当我保持标签的填充原样时,一切都很好。但是当我将padding设置为0时,会发生这种情况:

Border around Label

(那里不应该有白色边框)
这是我的XAML代码

<Grid>
    <Grid.ColumnDeFinitions>
        <ColumnDeFinition Width="0.2*"></ColumnDeFinition>
        <ColumnDeFinition Width="0.8*"></ColumnDeFinition>
    </Grid.ColumnDeFinitions>
    <Grid.RowDeFinitions>
        <RowDeFinition Height="0.02*"></RowDeFinition>
        <RowDeFinition Height="0.98*"></RowDeFinition>
    </Grid.RowDeFinitions>
    <Grid VerticalAlignment="Center" Margin="0px" x:Name="TitleBar" Background="#121212" Grid.ColumnSpan="2" Grid.Row="0">
    <Grid.ColumnDeFinitions>
        <ColumnDeFinition Width="0.2*"></ColumnDeFinition>
        <ColumnDeFinition Width="0.6*"></ColumnDeFinition>
        <ColumnDeFinition Width="0.2*"></ColumnsDeFinition>
        </Grid.ColumnDeFinitions>
        <Label Padding="5px 0px 0px 0px" Grid.Column="0" Grid.Row="0" Foreground="White">WorkChatApp</Label>
    </Grid>
    <ScrollViewer x:Name="Channels" Background="#232323" Grid.Column="0" Grid.Row="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"></ScrollViewer>
    <ScrollViewer x:Name="Messages" Grid.Column="1" Grid.Row="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"></ScrollViewer>
</Grid>

解决方法

这不是边框,而是窗口的背景。您定义Grid,其中包含TitleBar Grid,其中行的高度为星形:0.02*"0.98*"。这就是说,第一行将始终缩放为占据可用高度的2%,第二行将占据可用高度的98%。

但是,您已经将VerticalAlignment TitleBar中的Grid设置为Center,因此它将仅缩放到显示其内容所需的大小,并且然后居中。这也意味着,如果有多余的空间,TitleBar将居中,并且在其上方和上方将有空白空间,这就是您看到并感知为边界的地方。如果扩大应用程序窗口,则可以观察到相同的效果。因此,这与Padding中的Label不相关。

以这种方式设置星形高度可能会导致调整父容器大小时导致布局错误甚至控件无法使用。例如,如果将窗口缩小,TitleBar在某些时候将不可读。

相反,您可以将第一行设置为Auto,将第二行设置为星形(默认为*)。

<Grid>
   <Grid.ColumnDefinitions>
      <ColumnDefinition Width="0.2*" />
      <ColumnDefinition Width="0.8*" />
   </Grid.ColumnDefinitions>
   <Grid.RowDefinitions>
      <RowDefinition Height="Auto" />
      <RowDefinition Height="*" />
   </Grid.RowDefinitions>
   <!-- ...other grid content. -->
</Grid>

如果您这样定义列,则第一行将始终缩小到显示其内容所需的最小大小,而第二行将占用剩余空间。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。