我有以下XAML,在网格单元格中,我尝试使用一个按钮仅使用它所需的空间,停靠在右侧,并停靠在左侧,一个文本框占据该单元格中的剩余空间
<Grid Height="Auto" Width="Auto" Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="290"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
...
<DockPanel Grid.Column="1" Grid.Row="4">
<TextBox Name="txtSelectedViewUrl" Text="{Binding Url}" IsEnabled="{Binding EditMode}"/>
<Button Name="btnTestUrl" Content="Test" Click="btnTestUrl_Click_1" DockPanel.Dock="Right"/>
</DockPanel>
...
</Grid>
相反,我得到以下内容:当最初为空时,文本框几乎不可见,我只需单击它即可开始输入。按钮占据了整个空间。当我在文本框中键入时,按钮的宽度会减小,从而为文本框增加空间。当你认为按钮已达到最小尺寸时,它不会停在那里,它会持续到文本框占据整个单元格并且按钮变得不可见。至少文本框不会溢出......
我尝试了各种各样的东西,但无法让停靠面板布局在这里工作。我正在寻找从右到左流动的堆栈面板可以提供帮助的解决方案,但是当搜索如何获得最后一个元素来填充空间的剩余部分时,我最终会建议使用底座面板作为解决方案!
答案 0 :(得分:1)
您需要将DockPanel的LastChildFill
属性设置为true,并将文本框设置为最后一个子项(dockpanel中的最后一个元素)。这将告诉DockPanel
将文本框显示为填充元素。检查this post有关DockPanel的信息以供参考。
<DockPanel Grid.Column="1" Grid.Row="4" LastChildFill="True">
<Button Name="btnTestUrl" Content="Test" Click="btnTestUrl_Click_1" DockPanel.Dock="Right"/>
<TextBox Name="txtSelectedViewUrl" Text="{Binding Url}" IsEnabled="{Binding EditMode}"/>
</DockPanel>