扩张器向内推,我怎样才能推动它们使窗户更大?

时间:2016-07-19 22:45:55

标签: c# wpf

 <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”似乎对此没有任何影响。

编辑:如果你垂直地做这个也有同样的“问题”,这对我认为的扩展器更为传统。有什么方法吗?

1 个答案:

答案 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>