【问题标题】:Silverlight ScrollViewer not working when containing multiple usercontrols包含多个用户控件时,Silverlight ScrollViewer 不起作用
【发布时间】:2013-04-18 13:17:05
【问题描述】:

我有一个包含标题区域和内容区域的页面。内容区只包含一个用户控件。 我们有一个类结构,AbstractClassA 是所有要显示的类的基类。抽象类 B 和 C 都继承自 A。 具体类 B1 和 B2 继承自 B,具体类 C1 和 C2 继承自 C。

然后,此用户控件包含许多显示 A 信息的控件,以及两个附加控件,每个控件一个用于 B 和 C,仅当显示的类属于相关类型时才可见。

这些附加控件然后显示与其对应的抽象类相关的所有字段,加上与具体类相关的附加控件,再次仅在基础类的类型正确时显示,然后具有与具体类相关的字段.

这一切都很好,只是我们正在处理的一些类有太多的字段,它们不再适合屏幕了。因此,显而易见的事情是 - 将内容包装在滚动查看器中。

唯一的问题是这似乎不起作用。

后续控件的可见性绑定到视图模型上的属性(通过布尔到可见性转换器),该属性确定正在处理的类类型。后备值是折叠的,因此它们开始不可见。不确定所需的大小在随后是否以某种方式无法传递给滚动查看器?由于滚动条没有出现,尽管设置为自动。下面的xml

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

我也尝试将滚动查看器放在用户控件中,但无济于事。我错过了什么?

【问题讨论】:

    标签: silverlight xaml


    【解决方案1】:

    问题并不明显,我需要发布后续子控件之一,其可见性是这样确定的:

            <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 对象的大小为零 - 因此在可见时没有向滚动查看器注册任何内容。 一旦我把它换成网格,一切都很好......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      • 1970-01-01
      • 2019-07-14
      • 2019-12-06
      • 2017-01-16
      相关资源
      最近更新 更多