WPF面板 - 非标准堆叠

时间:2011-01-28 20:01:05

标签: wpf xaml wpf-controls

我想做一些其他项目堆叠,但我不知道它有多简单。 这是正常的经纱面板堆叠(从左上方到右上方,然后没有位置,然后下一个项目将堆叠在第一个左上方的自由位置):

enter image description here

但是,我想要从右下角到右上角堆叠,如果没有下一个项目的位置,那么我想下一个项目将堆叠在第一个左下方的自由位置。

像这样:

|    X
|    X
|   XX
|   XX

可靠的是,仅使用WarpPanel无法实现这一点。我对新想法持开放态度。

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

这比生产代码更开玩笑,但它有效! :)

XAML:

    <Window.Resources>
        <Style TargetType="FrameworkElement" x:Key="rotateItPlease">
            <Setter Property="RenderTransform">
                <Setter.Value>
                    <ScaleTransform ScaleX="-1" ScaleY="-1" />
                </Setter.Value>
            </Setter>
            <Setter Property="RenderTransformOrigin" Value="0.5,0.5" />
        </Style>
    </Window.Resources>

然后将此样式应用于WrapPanel及其所有子项(如果将wrapPanel作为某些ItemsControl的一部分,则会更容易):

    <WrapPanel Orientation="Vertical" Style="{StaticResource rotateItPlease}"> 
        <Button Style="{StaticResource rotateItPlease}">Hello</Button>
        <Button Style="{StaticResource rotateItPlease}">Hello</Button>
        <!-- More buttons here -->                       
    </WrapPanel>

答案 1 :(得分:0)

我认为你不能自定义WrapPanel来做到这一点。但是,您始终可以创建自定义面板。

在网页上搜索WPF中的自定义面板实现,您将获得大量教程。