Xaml 设计,调整大小的基本问题

问题描述 投票:0回答:0

我是 xaml 设计的新手,上次我设计一个用户控件时我使用了 Windows 窗体:-( 我习惯于锚定控件并停止,当我调整窗体大小时控件会相应地调整大小。 我试图创造的是这样的

  • 第 0 列和第 2 列固定在最大标签大小上,第 1 列和第 3 列在窗口调整大小时扩展。
  • 文本框 2 和 7 在窗口调整大小时展开
  • 文本框 3 在窗口调整大小时展开,但它到达右边框(如文本框 7)
  • 组合框根据其项目大小固定大小
  • 靠近标签 4 的 RichTextBox 在右边框和底边框展开,以占据所有可用空间

我尝试了网格、堆叠面板,但我的所有尝试都因某些特定问题而失败。

编辑

我按照 BionicCode 的建议创建了一个内部带有网格的用户控件,并将其放在 TabControl 中,这就是结果 1 experiment

当我调整它的大小时,Texboxes 2、3、7 和 RichTextBox 在水平方向上正确调整大小,但还有 2 个问题:

  1. 当我调整到较低的宽度时,第 0 列和第 2 列的大小调整得太多并且文本被剪切
  2. 富文本框没有垂直展开,所以它的下边框和标签底部之间有空白

这是我创建的代码

<UserControl x:Class="MyControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:Gui"
         mc:Ignorable="d">

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Dictionaries\Styles.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</UserControl.Resources>

<Grid Height="auto" Width="auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="10,10,10,10">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="36*"/>
        <ColumnDefinition Width="163*" />
        <ColumnDefinition Width="34*"/>
        <ColumnDefinition Width="165*" />
    </Grid.ColumnDefinitions>

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

    <Label Name="labelCol0"      Grid.Row="0" Grid.Column="0" FontSize="11" FontFamily="Microsoft Sans Serif" TabIndex="1" Margin="1,5,10,5" HorizontalAlignment="Left" >Column 0</Label>
    <Label Name="labelCol1"      Grid.Row="0" Grid.Column="1" FontSize="11" FontFamily="Microsoft Sans Serif" TabIndex="1" Margin="1,5,10,5">Column 1</Label>
    <Label Name="labelCol2"      Grid.Row="0" Grid.Column="2" FontSize="11" FontFamily="Microsoft Sans Serif" TabIndex="1" Margin="1,5,10,5">Column 2</Label>
    <Label Name="labelCol3"      Grid.Row="0" Grid.Column="3" FontSize="11" FontFamily="Microsoft Sans Serif" TabIndex="1" Margin="1,5,10,5">Column 3</Label>

    <Label Name="label1"        Grid.Row="1" Grid.Column="0" FontSize="11" FontFamily="Microsoft Sans Serif" TabIndex="1" Margin="1,5,10,5"  HorizontalAlignment="Left">label 1</Label>
    <ComboBox Name="_cbo1"    Grid.Row="1" Grid.Column="1" Width="93" HorizontalAlignment="Left" TabIndex="0" Margin="0,5,0,5" />
    <Label Name="label6"     Grid.Row="1" Grid.Column="2" FontSize="11" FontFamily="Microsoft Sans Serif" TabIndex="4" Margin="1,5,0,5"  HorizontalAlignment="Left">label 6</Label>
    <ComboBox Name="_cbo2"  Grid.Row="1" Grid.Column="3" Width="76" TabIndex="3" HorizontalAlignment="Left" Margin="0,5,0,5" />

    <Label Name="label2"    Grid.Column="0" Grid.Row="2" FontSize="11" FontFamily="Microsoft Sans Serif" TabIndex="8" HorizontalAlignment="Left" Margin="1,5,0,5" Width="42" >label 2</Label>
    <TextBox Name="_txt2" Grid.Column="1" Grid.Row="2" TabIndex="6" TextWrapping="Wrap" Margin="0,6,10,6" Text="TextBox 2"/>
    <Label Name="label7"       Grid.Column="2" Grid.Row="2" Width="47" FontSize="11" FontFamily="Microsoft Sans Serif" TabIndex="9" HorizontalAlignment="Left" Margin="0,5,0,5" >label 7</Label>
    <TextBox Name="_txt7"    Grid.Column="3" Grid.Row="2" Width="auto" TabIndex="7" TextWrapping="Wrap" Margin="1,5,10,5" Text="TextBox 7" />

    <Label Name="label3"        Grid.Column="0" Grid.Row="3" Width="57" FontSize="11" FontFamily="Microsoft Sans Serif" TabIndex="13" HorizontalAlignment="Left" Margin="1,5,0,5" >label 3</Label>
    <TextBox Name="_txt3" Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="3" TabIndex="12" TextWrapping="Wrap" Margin="0,5,10,5" Text="TextBox 3" />

    <Label Name="label4"        Grid.Column="0" Grid.Row="4" Width="42" FontSize="11" FontFamily="Microsoft Sans Serif" TabIndex="24" HorizontalAlignment="Left" Margin="1,72,0,73" >label 4</Label>
    <RichTextBox Name="richTextBox4" Grid.Column="1" Grid.Row="4" Grid.ColumnSpan="3" Width="auto" TabIndex="25" Margin="1,5,10,10" >
        <FlowDocument>
            <Paragraph>
                <Run></Run>
            </Paragraph>
        </FlowDocument>
    </RichTextBox>

</Grid>
wpf xaml grid stackpanel columnspan
© www.soinside.com 2019 - 2024. All rights reserved.