2015-10-13 82 views
1

我有一个布局:滚动的列表框,在弹出的

<Popup> 
    <Border> 
     <ScrollViewer> 
      <Grid> 
       <TextBlock/> 
       <ListBox/> 
       <TextBlock/> 
       <ListBox/> 
      </Grid> 
     </ScrollViewer> 
    </Border> 
</Popup> 

我的问题是,当光标位于上方的TextBlock和边境的背景,我可以滚动,但我不能当它是上述列表框的项目。 列表框显示没有滚动条的所有项目。 我想整个ListBox作为一个控件行为。

为什么滚动不能只在ListBoxes上面工作?

+0

移除ScrollViewer当你卷动'滚动ListBox'那'ListBox'。我假设你正在谈论鼠标滚轮滚动。 – Sinatr

+0

你有一个winrt /通用或Windows手机项目,而不是WPF? –

回答

1

如果通过滚动你的意思是鼠标滚轮那么它无关ListBoxPopup之中。这是因为ScrollViewerListBox默认模板的一部分。如果你想处理其他地方滚动,你需要通过改变ListBox.Template

<ListBox> 
    <ListBox.Template> 
     <ControlTemplate TargetType="{x:Type ListBox}"> 
      <ItemsPresenter/> 
     </ControlTemplate> 
    </ListBox.Template> 
</ListBox> 
0

ScrollViewerListBox支持滚动。 您的Grid将允许其中的所有控件在分配给它的尺寸范围内尽可能扩大。在这种情况下,尺寸在功能上是无限的,因为Grid装在ScrollViewer中。如果你希望你的ListBox滚动而不是完全展开,你需要在你的Grid上设置尺寸,或者去掉ScrollViewer

尺寸设置:

<Popup> 
    <Border> 
     <ScrollViewer> 
      <Grid Height="200" Width="200"> 
       <TextBlock/> 
       <ListBox/> 
       <TextBlock/> 
       <ListBox/> 
      </Grid> 
     </ScrollViewer> 
    </Border> 
</Popup> 

没有ScrollViewer

<Popup> 
    <Border> 
     <Grid> 
      <TextBlock/> 
      <ListBox/> 
      <TextBlock/> 
      <ListBox/> 
     </Grid> 
    </Border> 
</Popup>