wpf - 在 Wpf 网格中使用 SharedSizeGroup 和 ColumnSpan

标签 wpf

当我在列上同时使用 SharedSizeGroup 和列跨越控件创建网格时,网格会“精神上”晃动并使 cpu 内核达到最大。

我敢肯定一定有一个很好的理由说明为什么这行不通,但我想不出!我还能如何实现这种尺寸布局?

<Grid IsSharedSizeScope="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" SharedSizeGroup="Columns"/>
            <ColumnDefinition Width="Auto" SharedSizeGroup="Columns"/>
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <Label Grid.Column="0">Blah</Label>
        <Label Grid.Column="1">Blah Blah Blah Blah</Label>

        <Label Grid.Row="1" Grid.ColumnSpan="2">ajsgdeererajgsfdg dfg df gdfg djgsad</Label>
    </Grid>

最佳答案

您所做的基本上是在您的布局中设置无限递归。

  • 要共享大小,列首先需要计算自己的大小。
  • 然后他们可以根据 较大的(可能是此处的第 1 列)。
  • 在第 0 列扩展以匹配之后 第一列的大小,第三个标签可以 现在在列中使用更多空间
  • 当它移动列时,它的空间 列 1 中的需求变小, 允许第 1 列缩小到 匹配其所需的新空间 内容。
  • 第 1 列现在重新计算其大小(从第一步重新开始)

SharedSizeGroup 旨在跨不同的网格使用,以保持以某种方式分离到不同容器中的元素对齐,例如不同的模板化列表项或标题行。如果您需要一个未拉伸(stretch)的等分行,您可以使用其他东西,例如 * 大小的列或 UniformGrid。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <UniformGrid Rows="1" HorizontalAlignment="Left">
        <Label >Blah</Label>
        <Label >Blah Blah Blah Blah</Label>
    </UniformGrid>

    <Label Grid.Row="1">ajsgdeererajgsfdg dfg df gdfg djgsad</Label>
</Grid>

关于wpf - 在 Wpf 网格中使用 SharedSizeGroup 和 ColumnSpan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4880184/

相关文章:

wpf - XAML TextBlock 和运行绑定(bind)

c# - 客户端服务器套接字应用程序上的方法错误没有过载

wpf - 微软功能区的问题

c# - WPF MVVM 我可以从 View 中使用模型吗

c# - WPF 丢失数据绑定(bind)

c# - 使用 FormatConvertedBitmap 将位图转换为 Gray8 仅使用 4 位?

wpf - 如何使用 MultiBinding 在上下文菜单中隐藏分隔符?

c# - 在 WPF 中操作图像控件

c# - 基本类命名和可见性问题

c# - 如何检测udpclient何时收到数据?