【问题标题】:WPF Square auto-size to parent containerWPF Square 自动调整到父容器的大小
【发布时间】:2012-01-30 17:26:07
【问题描述】:

我的 WPF 项目中有一个 UniformGrid 对象,它有 2 行和 3 列,并且它的宽度和高度设置为自动(两个对齐方式都设置为拉伸)。

这个网格将包含 6 个正方形,我想尽可能多地填充它们的单元格并水平和垂直居中。

我需要添加什么以允许正方形根据父项的动态大小增加/减少其长度/宽度?即,调整窗口大小时。

到目前为止,这是我的 xaml:

    <UniformGrid Rows="2" Columns="3">
        <Rectangle Fill="#FFF4F4F5" Height="100" Stroke="Black" Width="100"/>
        <Rectangle Fill="#FFF4F4F5" Height="100" Stroke="Black" Width="100"/>
        <Rectangle Fill="#FFF4F4F5" Height="100" Stroke="Black" Width="100"/>
        <Rectangle Fill="#FFF4F4F5" Height="100" Stroke="Black" Width="100"/>
        <Rectangle Fill="#FFF4F4F5" Height="100" Stroke="Black" Width="100"/>
        <Rectangle Fill="#FFF4F4F5" Height="100" Stroke="Black" Width="100"/>
    </UniformGrid>

编辑:

并且Rectangle 对象需要保持正方形。

【问题讨论】:

    标签: wpf user-interface autolayout resize autoresize


    【解决方案1】:
    <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
      <Grid>
    <UniformGrid Rows="2" Columns="3">
    <Viewbox Stretch="Uniform"><Rectangle Height="100" Width="100" Fill="#FFF4F4F5" Stroke="Black" /></Viewbox>
    <Viewbox Stretch="Uniform"><Rectangle Height="100" Width="100" Fill="#FFF4F4F5" Stroke="Black" /></Viewbox>
    <Viewbox Stretch="Uniform"><Rectangle Height="100" Width="100" Fill="#FFF4F4F5" Stroke="Black" /></Viewbox>
    <Viewbox Stretch="Uniform"><Rectangle Height="100" Width="100" Fill="#FFF4F4F5" Stroke="Black" /></Viewbox>
    <Viewbox Stretch="Uniform"><Rectangle Height="100" Width="100" Fill="#FFF4F4F5" Stroke="Black" /></Viewbox>
    <Viewbox Stretch="Uniform"><Rectangle Height="100" Width="100" Fill="#FFF4F4F5" Stroke="Black" /></Viewbox>
        </UniformGrid>
      </Grid>
    </Page>
    

    【讨论】:

    • 请注意,这将缩放矩形,而不是调整大小。
    【解决方案2】:

    你可以这样做:

    <UniformGrid.Resources>
        <Style TargetType="Rectangle">
            <Setter Property="Width"
                    Value="{Binding RelativeSource={RelativeSource Mode=Self},Path=ActualHeight}" />
        </Style>
    </UniformGrid.Resources>
    

    或者您可以将高度绑定到实际宽度。

    不幸的是,这不会让他们最大限度地伸展。

    【讨论】:

      【解决方案3】:

      如果您删除 heightwidth 属性,它就会这样做。

      【讨论】:

        猜你喜欢
        • 2011-06-28
        • 1970-01-01
        • 1970-01-01
        • 2016-04-25
        • 2010-10-26
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 2017-05-09
        相关资源
        最近更新 更多