我正在设计一个 WPF UserControl,它需要根据用户的选择显示不同的组件。但是由于这个UserControl还是比较简单的,所以我决定只有一个View(这个UserControl)和一个ViewModel。所以基本上我所拥有的是一个组合框,它具有枚举值选项(至少三个选项)来指示用户想要查看的特定部分。对于单个组件,我现在设计的是,我有一个Grid
with multiple GridRow
. 并且只有代表用户选择数据的行的可见性为Visible
. 其他行/视图的可见性为Collapsed
. 但是有两个问题:
- 在一个网格行中,我有一个
ScrollViewer
. 据我所知,我无法将 GridRow 所在的高度设置ScrollViewer
为Auto
. 因为滚动条永远不会使用Auto
(因为实际高度足够显示所有内容,所以不需要滚动条)。但是,如果我不将高度设置为Auto
,则当我将此行的可见性设置为 时,高度不会变为零(因此不会显示此行)Collapsed
。例如,如果我将网格行高设置为 as*
,然后设置 as 的可见性ScrollViewer
,Collapsed
则ScrollViewer
不会显示 ,但仍然有一个空白空间对应于一颗星的高度。 - 正如我所提到的,我至少有 3 个选项/不同的观点。因此,从 bool 属性到可见性的绑定是不够的。我想我可以制作一个专用转换器,但感觉不够通用。
谁能告诉我,如何实现我的目标,即根据用户的选择使用一个 UserControl(所有绑定到同一个 ViewModel)显示不同的 UI 部分?