Авто-прокручиваемая панель - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть элемент управления, который позволяет пользователю перетаскивать и изменять размеры элементов внутри него. Элементы можно перетаскивать из видимой области, и в этом случае я хотел бы показать соответствующие полосы прокрутки.

Вот часть 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 голосов
/ 02 апреля 2012

С Замечания по классу Canvas :

Canvas - единственный элемент панели, который не имеет встроенного макета характеристики. Холст имеет свойства высоты и ширины по умолчанию ноль, если только он не является дочерним элементом элемента, который автоматически его дочерние элементы. Дочерние элементы холста никогда не меняются, они просто расположены по назначенным координатам. Это обеспечивает гибкость в ситуациях, когда присущие ограничения размеров или выравнивания не нужны или не нужны. Для случаев, в которых вы хотите ребенка содержимое должно быть автоматически изменено и выровнено, обычно лучше используйте элемент Grid.

Вот почему столбцы никогда не отображаются.

...