【问题标题】:WPF Grid ColumnSpan content dynamic width reformating other contentWPF Grid ColumnSpan 内容动态宽度重新格式化其他内容
【发布时间】:2020-01-06 10:40:03
【问题描述】:

我知道这个问题的标题真的很混乱,而且很难解释,所以我画了下面的图片来解释我想要达到的目标。

我的布局必须具有相同宽度 (*) 的三列。在每一列中,都会有许多不同的组,其中包含静态内容。如果组标题太长,我希望组标题扩展到所有三列。然后在每列中每个组标题的右侧还有一个复选框,然后应该显示在标题下方但仍然在右侧。

我尝试了许多不同的方法来实现这一点,甚至最终尝试了数据触发器来设置网格行。

我目前的方法是再次将字幕栏设置为 3,如果没有空间,请尝试让复选框移开。

<Grid ShowGridLines="True">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <TextBlock Grid.Column="0" Text="Title 0"/>
    <TextBlock Grid.Column="1" Text="Title 1"/>
    <TextBlock Grid.Column="2" Text="Title 2"/>
    <TextBlock Grid.ColumnSpan="3" Background="LawnGreen" Grid.Row="1" 
               HorizontalAlignment="Left" Text="Subtitle 1"/>
    <CheckBox Grid.Row="1" HorizontalAlignment="Right" Content="Check"/>
    <CheckBox Grid.Row="1" Grid.Column="1" HorizontalAlignment="Right" Content="Check"/>
    <CheckBox Grid.Row="1" Grid.Column="2" HorizontalAlignment="Right" Content="Check"/>
</Grid>

感谢您的帮助,即使答案是不可能的。 ^^

【问题讨论】:

    标签: wpf layout dock


    【解决方案1】:

    据我所知,没有任何直接的解决方案。一种解决方法是将组标题 TextBlockCheckBox 放在不同的 Grid.Row

    <TextBlock Grid.ColumnSpan="3" Background="LawnGreen" Grid.Row="1" 
               HorizontalAlignment="Left" Text="Subtitle 1"/>
    <CheckBox Grid.Row="2" HorizontalAlignment="Right" Content="Check"/>
    <CheckBox Grid.Row="2" Grid.Column="1" HorizontalAlignment="Right" Content="Check"/>
    <CheckBox Grid.Row="2" Grid.Column="2" HorizontalAlignment="Right" Content="Check"/>
    

    【讨论】:

    • 好吧,我想我必须这样做,然后谢谢你^^
    猜你喜欢
    • 1970-01-01
    • 2020-08-28
    • 2011-04-24
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多