<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<someControl Grid.Column="0"/>
<Expander Grid.Row="1" ExpandDirection="Right"/>
<Expander Grid.Row="2" ExpandDirection="Right"/>
</Grid>
当打开窗口右侧的扩展器时,它们最终会使Grid Column 0中的控件变小。我希望保留该控件的大小,并使扩展器在打开时在窗口中向右侧腾出更多空间。这就好像扩展向左开放,尽管我已将它们设置为向右扩展。 “SizeToContent”似乎对此没有任何影响。
编辑:如果你垂直地做这个也有同样的“问题”,这对我认为的扩展器更为传统。有什么方法吗?
答案 0 :(得分:1)
Width="*"
告诉WPF使用该控件的所有剩余空间,无论它有多大或多小。窗口扩展的唯一方法(使用SizeToContent="Width"
)是控件不再适合列。
您可以省略窗口的Width
,以便以尽可能小的宽度进行初始化,或使用MinWidth
强制您的控件不缩小超过一定的大小。
第一种方法的样本(我删除了一些不相关的部分):
<Window Title="MainWindow" SizeToContent="Width" Height="300">
<Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="asdf asdf asdf asdf asdf asdf asdf asdf asdf "/>
<Expander Grid.Column="1" ExpandDirection="Right">
<Button VerticalAlignment="Top">Test 1</Button>
</Expander>
<Expander Grid.Column="2" ExpandDirection="Right">
<Button VerticalAlignment="Top">Test 2</Button>
</Expander>
</Grid>
</Grid>
</Window>