自动滚动面板

时间:2012-04-02 05:39:03

标签: wpf scrollviewer

我有一个项目控件,允许用户拖动和重新调整其中的项目。项目可能会被拖出可视区域,在这种情况下,我想显示相应的滚动条。

这是xaml

的部分
<ControlTemplate x:Key="ItemsControlTemplate" TargetType ="ItemsControl">
    <ScrollViewer HorizontalScrollBarVisibility="Auto">
       <ItemsPresenter />
    </ScrollViewer>
</ControlTemplate>

<ItemsControl ItemsSource="{Binding Path=Models}"                                              
              Margin="10,10,10,10"
              Grid.Row="1"
              VerticalContentAlignment="Stretch"
              HorizontalContentAlignment="Stretch"   
              Template="{StaticResource ItemsControlTemplate}">                   
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>                            
            <Canvas  ClipToBounds="True"
                     SnapsToDevicePixels="True"/>                                             
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <ContentControl  Height="400" Width="600"   
                             Canvas.Left="50" Canvas.Top="150"
                             Template="{StaticResource DesignerItemTemplate}"
                             Margin="10,10,10,10">
                <Views:ChartView />
            </ContentControl>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

xaml显示条形图,但当项目被拖出视图时,条形图不会启用。

1 个答案:

答案 0 :(得分:0)

来自Canvas Class Remarks

  

Canvas是唯一没有固有布局的面板元素   特点。 Canvas具有默认的Height和Width属性   零,除非它是自动调整大小的元素的子元素   它的子元素。画布的子元素永远不会调整大小,它们   只是位于他们指定的坐标。这提供了   灵活的固有尺寸限制或   不需要或想要对齐。对于你想要孩子的情况   要自动调整大小和对齐的内容,通常最好   使用网格元素。

这就是为什么酒吧永远不会出现的原因。