Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用户控件内部的WPF Scrollviewer不';不显示垂直滚动条_C#_.net_Wpf_Silverlight_Prism - Fatal编程技术网

C# 用户控件内部的WPF Scrollviewer不';不显示垂直滚动条

C# 用户控件内部的WPF Scrollviewer不';不显示垂直滚动条,c#,.net,wpf,silverlight,prism,C#,.net,Wpf,Silverlight,Prism,我使用的是棱镜架构 我有一个如下的结构 <Window Height="300" Width="300"> <Grid> <ItemsControl> <UserControl> <ScrollViewer> <StackPanel> </StackPanel> </ScrollViewer>

我使用的是棱镜架构

我有一个如下的结构

<Window Height="300" Width="300">
  <Grid>
    <ItemsControl>

      <UserControl>
        <ScrollViewer>
          <StackPanel>
          </StackPanel>
        </ScrollViewer>
       </UserControl>

     </ItemsControl>
  </Grid>
</Window>

水平滚动条显示,但垂直滚动条不显示

请注意,将stackpanel更改为网格(如下所示)并没有帮助

          <UserControl>
            <ScrollViewer>
              <Grid>
                <StackPanel>
                </StackPanel>
              </Grid>
            </ScrollViewer>
          </UserControl>

StackPanel
无限期增长(即,在明确设置之前,高度不受限制)

使用另一个面板如网格、DockPanel等,或限制StackPanel的固定高度

<ScrollViewer>
    <DockPanel>
    </DockPanel>
</ScrollViewer>


也可以按如下方式约束高度:

<StackPanel Height="{Binding ActualHeight,
      RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window}}"/>

ScrollViewer
放在
网格中
。这有助于
ScrollViewer
使用
Grid
中的可用空间,如果内容溢出,它将显示滚动条。这取决于您在哪里使用
UserControl
。确保此
UserControl
未放置在
ScrollViewer
或任何可滚动控件中

      <UserControl>
        <Grid>
          <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
            <StackPanel>
            </StackPanel>
          </ScrollViewer>
        </Grid>
      </UserControl>


我使用的是棱柱图案
-棱柱不是图案。为了让滚动条显示,您需要限制
滚动查看器
本身的大小,这似乎在这里没有发生。@HighCore是否可以将窗口的高度绑定到滚动查看器?如果是的话,请告诉我怎么做。我不确定你想达到什么目的。再次将StackPanel放置在网格内。大小仍然不受限制。网格内的项目是否会扩展并占用所有可用空间?您可以通过将其绑定到窗口高度来限制
StackPanel
高度。请参阅我的答案中的更新。我可以使用viewmodel属性绑定窗口的实际高度吗?某些控件不可见,因此,我必须更改实际高度。您可以将高度绑定到ViewModel属性,但不能将实际高度绑定到ViewModel属性,因为它是readonly属性。我已经尝试过了,但不起作用。滚动条仍然不可见。请确保您的
UserControl
未放置在可滚动控件中,并且其对齐方式处于拉伸状态。我已显示了整个xaml。Usercontrol位于根网格中的itemscontrol内部。
itemscontrol的
ItemsPanel
默认情况下是一个
StackPanel
。是否确实要为
ItemsControl
中的每个项目设置滚动条?否则,您可以从
UserControl
中删除
ScrollViewer
,而是将ItemsControl封装在一个控件中。然后,您可以从
UserControl
中删除
ScrollViewer
。将
ItemsControl
包装在
ScrollViewer
中,就可以开始了。
      <UserControl>
        <Grid>
          <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
            <StackPanel>
            </StackPanel>
          </ScrollViewer>
        </Grid>
      </UserControl>