【问题标题】:ZOrder behavior in WPF grid?WPF网格中的ZOrder行为?
【发布时间】:2011-01-30 19:36:54
【问题描述】:

下面的代码包含一个简单的网格,在网格的中间列有一个按钮。按钮宽度(有意)大于放置它的列。请注意,按钮的左侧部分可见,右侧不可见。我该怎么做才能使左右按钮部分不可见?按钮的右侧部分位于右网格列的 z 下方,但按钮的左侧部分位于左侧网格列的 z 上方。我还需要左侧网格列隐藏左侧按钮部分。

这是 XAML 的简化版本,我试图在其中制作“电影片段”的动画。胶片应放置在左右网格柱的z-下方和中间部分的z-上方。动画效果很好,但用户在左侧看到了一段时间的控件,她不应该看到这些控件,因为这些控件应该被左侧网格列“覆盖”。

<Grid x:Name="LayoutRoot">
    <Border Background="Yellow" x:Name="ContentBorder">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="40"/>
                <ColumnDefinition />
                <ColumnDefinition Width="40"/>
            </Grid.ColumnDefinitions>

            <Grid Grid.Column="1" >
                <Button Content="Button" Margin="-20, 0, 0, 0" Width="240" Height="33"/>
            </Grid>
        </Grid>
    </Border>
</Grid>

【问题讨论】:

    标签: wpf layout z-order


    【解决方案1】:

    尝试添加 ClipToBounds

    <Grid x:Name="LayoutRoot">
        <Border Background="Yellow" x:Name="ContentBorder">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="40"/>
                    <ColumnDefinition />
                    <ColumnDefinition Width="40"/>
                </Grid.ColumnDefinitions>
                <Grid Grid.Column="1" ClipToBounds="True" >
                    <Button Content="Button" Margin="-20, 0, 0, 0" Width="240" Height="33"/>
                </Grid>
            </Grid>
        </Border>
    </Grid>
    

    【讨论】:

    • 您的建议与我的需要完全相反。我需要隐藏这两个部分,而不是显示。
    • @Hans - 抱歉,看错了。尝试将 ClipToBounds 设置为 true。查看修改后的答案
    • 太棒了,效果很好 :) 我现在可以看到真正的 WPF 初学者问题 ;)
    猜你喜欢
    • 1970-01-01
    • 2015-10-08
    • 2018-12-18
    • 2014-08-25
    • 1970-01-01
    • 2011-10-18
    • 2019-05-29
    • 2011-01-30
    相关资源
    最近更新 更多