C# 堆叠多组文本块和文本框,并在组之间自动设置间距
我是WPF新手,在设计UI时遇到了问题 我想显示客户字段的一行控件:姓名、电话、年龄、地址: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
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>