c# - 扩展器扩展时扩展网格
问题描述
我在 wpf 中设计我的 GUI 时遇到问题。如何动态设置 Grid ColumnDefinition Width,
我有一个扩展器。当点击扩展器时,网格也应该随着扩展器的大小进行扩展和调整
到目前为止,我有这个 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”具有一些最小宽度,只需设置属性 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"/>
同样在扩展器中,您只能拥有一个用户控件,因此您所说的“东西”需要位于一些布局控件中,例如堆栈面板、码头或另一个网格等。
让我知道它是否按您的预期工作。
推荐阅读
- python - 用不重叠的正方形填充不规则形状
- python - 如何根据索引列表从 grouby 对象中删除组?
- .net - 使用 .NET Winforms 显示 4x4 网格
- amazon-web-services - Amazon SES CloudWatch 成本估算
- postgresql - 外键关系迁移期间 Ecto 引用另一个模式
- c# - 具有范围依赖关系的 ASP.NET CORE Automapper 配置文件
- node.js - 单击显示相同选项的编辑和删除按钮后(编辑或删除)
- postgresql - PostgreSQL 中的 Vantage Point 树结构
- jquery - 如何使 Electron 与最新版本的 jQuery、Popper 和 Bootstrap 一起工作?
- node.js - Sharp 输入文件丢失但路径存在