Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 堆叠多组文本块和文本框,并在组之间自动设置间距_C#_Wpf - Fatal编程技术网

C# 堆叠多组文本块和文本框,并在组之间自动设置间距

C# 堆叠多组文本块和文本框,并在组之间自动设置间距,c#,wpf,C#,Wpf,我是WPF新手,在设计UI时遇到了问题 我想显示客户字段的一行控件:姓名、电话、年龄、地址: Group_1[Textblock1 Textbox1]Group_2[Textblock2 Textbox2]等等 例如: 对于客户: name_textblock Text_box <variable gap> Phone Text_box <variable gap> Age Text_box <variable gap> Address Text_box n

我是WPF新手,在设计UI时遇到了问题

我想显示客户字段的一行控件:姓名、电话、年龄、地址:

Group_1[Textblock1 Textbox1]Group_2[Textblock2 Textbox2]
等等

例如:

对于客户:

name_textblock Text_box <variable gap> Phone Text_box <variable gap> Age Text_box <variable gap> Address Text_box
name\u Text块文本框电话文本框年龄文本框地址文本框
请参见附件图像:

我想将
一个文本块和一个文本框(不可见分组,无组边框等)与固定间距一起分组,然后根据屏幕分辨率/DPI,这两个组之间的间距应该有所不同


你是怎么做到的?我对WPF非常陌生,这是我在WPF中的第一个UI。

您可以像这样设置
网格

<Grid>
  <Grid.ColumnDefinitions>
    <ColumnDefinition />
    <ColumnDefinition />
    <ColumnDefinition />
  </Grid.ColumnDefinitions>

  <StackPanel Orientation="Horizontal" Grid.Column="0" HorizontalAlignment="Left">
    <TextBlock Text="123" Margin="0,0,8,0" />
    <TextBox Width="30" />
  </StackPanel>
  <StackPanel Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Left">
    <TextBlock Text="123" Margin="0,0,8,0" />
    <TextBox Width="30" />
  </StackPanel>
  <StackPanel Orientation="Horizontal" Grid.Column="2" HorizontalAlignment="Left">
    <TextBlock Text="123" Margin="0,0,8,0" />
    <TextBox Width="30" />
  </StackPanel>
</Grid>

根据您的场景,您可以考虑使用水平<代码> ITEMsStase。

可以创建一个“代码>网格/<代码>,里面有多个堆栈面板,其中文本块是放置的,您能给出详细信息吗?像网格一样,ColumnDefinitions应该是什么值?ColumnWidth应该是
*
所以,一个由4列组成的网格,以*作为宽度,每个grid.column有1个stackpanel每个stackpanel有1个textblock和1个textbox?工作正常,谢谢。然而,有一个小问题,我希望textbox在textblock宽度之后填充每个stackpanel的剩余空间。我的意思是textbox.width=stackpanel.width-textblock.width。我尝试了textbox的HorizontalAlignment=“Stretch”,但它不起作用。
<Grid>
  <Grid.ColumnDefinitions>
    <ColumnDefinition />
    <ColumnDefinition />
    <ColumnDefinition />
  </Grid.ColumnDefinitions>

  <DockPanel Grid.Column="0" LastChildFill="True">
    <TextBlock Text="123" />
    <TextBox Margin="4,0,8,0" />
  </DockPanel>
  <DockPanel Grid.Column="1" LastChildFill="True">
    <TextBlock Text="123" />
    <TextBox Margin="4,0,8,0" />
  </DockPanel>
  <DockPanel Grid.Column="2" LastChildFill="True">
    <TextBlock Text="123" />
    <TextBox Margin="4,0,8,0" />
  </DockPanel>
</Grid>