我有一个页面,其中包含标题区域和内容区域。内容区域只包含一个用户控件。 我们有一个类AbstractRlassA的类结构是要显示的所有类的基类。抽象类B& C都继承自A. 具体类B1和B2继承自B,具体类C1和C2继承自C。
然后,该用户控件包含许多显示A信息的控件,另外还有两个附加控件,分别用于B& C,仅在显示的类具有相关类型时才可见。
那些addituional控件然后显示与其对应的抽象类相关的所有字段,并且具有与具体类相关的附加控件,再次仅在基础类具有正确类型时显示,然后具有与具体类相关的字段
这一切都很好,只是我们正在处理的一些类有很多字段,它们不再适合屏幕。所以,显而易见的事情 - 将内容包装在滚动查看器中。
唯一的问题是这似乎不起作用。
后续控件的可见性绑定到viewmodel上的属性(通过bool到visibility转换器),该属性确定正在处理的类的类型。后备值已折叠,因此它们开始不可见。不确定所需的大小是否会以某种方式无法传递给滚动查看器?由于滚动条没有出现,尽管设置为自动。下面的xaml
<Grid x:Name="LayoutRoot">
<!-- Divide the page into a row for the header and 1 further rows which are used to position the content -->
<Grid.RowDefinitions>
<RowDefinition Height="{StaticResource HeaderRowHeight}" />
<RowDefinition Height="*" />
<RowDefinition Height="100" />
</Grid.RowDefinitions>
<Grid Grid.Row="0"
Grid.Column="0"
Grid.ColumnSpan="2">
<!-- Page header -->
</Grid>
<!-- Main page content follows -->
<Grid Grid.Row="1"
Width="auto">
<ScrollViewer Height="700"
VerticalScrollBarVisibility="Auto">
<dataEdit:CaseTypeInternalEditControl Height="Auto" />
</ScrollViewer>
</Grid>
</Grid>
我也尝试将scrollviewer放在用户控件中,但无济于事。我错过了什么?
答案 0 :(得分:0)
问题在这个问题上并不明显,我需要发布一个后续的子控件,其可见性由此确定:
<Canvas Visibility="{Binding Path=CaseIsB, Converter={StaticResource BooleanToVisibilityConverter}, FallbackValue=Collapsed}">
<dataEditControls:CaseBEditControl DataContext="{Binding CaseBEditViewModel}" />
</Canvas >
<Canvas Visibility="{Binding Path=CaseIsC, Converter={StaticResource BooleanToVisibilityConverter}, FallbackValue=Collapsed}">
<dataEditControls:CaseCEditControl DataContext="{Binding CaseCEditViewModel}" />
</Canvas >
问题是Canvas对象的大小为零 - 因此在可见时没有向scrollviewer注册任何内容。 一旦我换了一个网格,一切都运行良好......