好的,我正在使用网格列出各种内容。如何在其他人保持固定的情况下获取特定的colums来调整大小。
也就是说,表单会弹出控件的特定初始列大小...如果用户调整表单...我希望某些“备忘录”字段可以展开。怎么做?我似乎只能让所有'第二'列扩展到高度...不只是1(最后一个)......或特定的。
感谢您的帮助!!
这是布局......如何使用表单调整大小来调整“长”文本的大小,并将按钮粘贴到表单的底部? TX
<DockPanel VerticalAlignment="Top">
<Grid DockPanel.Dock="Top" VerticalAlignment="Top" HorizontalAlignment="Stretch" Grid.Column="0" Margin="10,10,10,10" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition MinWidth="150" ></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition MinHeight="80" Height="Auto"></RowDefinition>
<RowDefinition ></RowDefinition>
</Grid.RowDefinitions>
<Label Grid.Column="0" Grid.Row="0" Content="Test1"/>
<Label Grid.Column="0" Grid.Row="1" Content="Test2 -Long notes"/>
<Label Grid.Column="0" Grid.Row="2" Content="Test3"/>
<TextBox Height="Auto" Grid.Column="1" Grid.Row="0" />
<TextBox Height="Auto" Grid.Column="1" Grid.Row="1" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" />
<TextBox Height="Auto" Grid.Column="1" Grid.Row="2" />
</Grid>
<StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Right" MinHeight="20" Margin=" 0,0,10,10">
<Button Content="OK" Margin="0,0,10,0" Width="75" IsDefault="True"/>
<Button Content="Cancel" Width="75" IsCancel="True" />
</StackPanel>
</DockPanel>
(在第一次“回答”之后添加) 现在,如果我删除底部堆栈面板(确定,取消按钮)超出方程式,以使这更容易,我将第1和第2行设置为固定值...我似乎能够使这工作(不要必须设置最大高度)...哦,我需要将verticalAlignment更改为'stretch'。但是,只要我再次为按钮添加StackPanel ......拉伸不再有效......所以这是下一个修订版......
<DockPanel VerticalAlignment="Stretch">
<Grid DockPanel.Dock="top" VerticalAlignment="Stretch" Grid.Column="0" Margin="10,10,10,10" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition MinWidth="150" Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition MaxHeight="30"></RowDefinition>
<RowDefinition MinHeight="80" Height="*"></RowDefinition>
<RowDefinition MaxHeight="30"></RowDefinition>
</Grid.RowDefinitions>
<Label Grid.Column="0" Grid.Row="0" Content="Test1"/>
<Label Grid.Column="0" Grid.Row="1" Content="Test2 -Long notes"/>
<Label Grid.Column="0" Grid.Row="2" Content="Test3"/>
<TextBox Grid.Column="1" Grid.Row="0" />
<TextBox Grid.Column="1" Grid.Row="1" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" />
<TextBox Grid.Column="1" Grid.Row="2" />
</Grid>
<StackPanel DockPanel.Dock="Bottom" VerticalAlignment="Bottom" HorizontalAlignment="Right" Orientation="Horizontal" MinHeight="20" Margin=" 0,0,10,10">
<Button Content="OK" Margin="0,0,10,0" Width="75" IsDefault="True"/>
<Button Content="Cancel" Width="75" IsCancel="True" />
</StackPanel>
</DockPanel>
所以我还有问题...
答案 0 :(得分:3)
使用*作为列宽而不是Auto,它告诉列占用其他列设置后留下的任何空间。
如果您需要多个列以不同的百分比共享可用空间,则可以在*前加上一个数字,如“2 *”和“3 *”。默认情况下,“”表示1 。
HTH,
Berryl
答案 1 :(得分:0)
我似乎只能通过在自己的网格行和列中包含StackPanel来解决问题。这是我的解决方案。在这种情况下不确定是否需要停靠面板...但是没有更多的修补......这是我目前的解决方案。如果任何人可以向我解释如何让它与堆栈面板一起使用确定,取消按钮“在网格外”,我很想知道。同时,这个解决方案适用于那些研究此类问题的人。如您所见,您需要在所有其他行定义中使用Auto。 *你希望它扩展的地方。
<DockPanel VerticalAlignment="Stretch">
<Grid DockPanel.Dock="top" VerticalAlignment="Stretch" Grid.Column="0" Margin="10,10,10,10" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition MinWidth="150" Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition MinHeight="80" Height="*"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<Label Grid.Column="0" Grid.Row="0" Content="Test1"/>
<Label Grid.Column="0" Grid.Row="1" Content="Test2 -Long notes"/>
<Label Grid.Column="0" Grid.Row="2" Content="Test3"/>
<TextBox Grid.Column="1" Grid.Row="0" />
<TextBox Grid.Column="1" Grid.Row="1" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" />
<TextBox Grid.Column="1" Grid.Row="2" />
<StackPanel Grid.Column="1" Grid.Row="3" VerticalAlignment="Bottom" HorizontalAlignment="Right" Orientation="Horizontal" MinHeight="20" Margin=" 0,10,0,0">
<Button Content="OK" Margin="0,0,10,0" Width="75" IsDefault="True"/>
<Button Content="Cancel" Width="75" IsCancel="True" />
</StackPanel>
</Grid>
</DockPanel>
答案 2 :(得分:0)
如果您希望只能重新调整行和列定义所形成的一个正方形的大小,则应在正方形中添加一个网格或任何容器元素。然后你将使方格内的网格相应地重新调整大小。这样所有的定义都不会重新调整大小,而是网格和它内部的元素将重新调整大小,从而不会改变其他元素。这种情况并不常见,但您可以拥有尽可能多的堆叠面板和网格,并在需要时设置其可见性。有时当某些东西不起作用时,将它们粘贴在其他东西中并进行实验。你可能偶然得到它,但你仍然可以得到它。