在wpf中设计GUI时遇到问题。 如何动态设置“网格列定义宽度”,
我有一个扩展器。单击扩展器时,网格也应扩展并根据扩展器的大小进行调整
到目前为止,我已经有了这个GUI
这是xaml代码
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="127"/>
<ColumnDefinition Width="665*"/>
</Grid.ColumnDefinitions>
<Expander Background="Gray" x:Name="expander" ExpandDirection="Right" Expanded="Expander_Expanded" >
<Expander.Header>
<TextBlock Text="Objects">
<TextBlock.LayoutTransform>
<RotateTransform Angle="-90"/>
</TextBlock.LayoutTransform>
</TextBlock>
</Expander.Header>
<StackPanel Margin="10,4,0,0">
<CheckBox Margin="4" Content="Option 1" />
<CheckBox Margin="4" Content="Option 2" />
<CheckBox Margin="4" Content="Option 3" />
</StackPanel>
<!-- Stuff XD -->
</Expander>
<Grid Grid.Column="1" Background="Red"/>
</Grid>
到目前为止,ColomnDefinition宽度为127
我希望将其调整为至少30。因此窗口将填充其他内容
像这样
但是我的问题是扩展器扩展后如何扩展网格。
还有另一件事。展开时无法获得扩展器的大小。它给了我NaN
,我不能用来设置columndefinition宽度
非常感谢。对不起,我的英语不好
答案 0 :(得分:0)
在第一列“宽度”中使用“自动”,它将根据内容定义扩展器的大小。 如果您希望列“ 0”具有最小宽度,则只需设置属性MinWidth。 (但在这种情况下,我不推荐,但请在下面显示)
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="30"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
我还将建议您使用GridSplitter,然后您将在两列之间使用拆分器,以允许用户在UI中更改列的宽度
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="30"/>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<GridSplitter Grid.Column="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="DarkSalmon"/>
在扩展器中,您也只能有一个用户控件,因此您说的“东西”需要放在某些布局控件中,例如堆栈面板,停靠区或其他网格等。
让我知道它是否按预期工作。