wpf itemscontrol элементы вне контроля - PullRequest
1 голос
/ 25 августа 2011

У меня есть собственный элемент управления, который наследуется от itemscontrol с собственным шаблоном.Я использую Canvas внутри itemscontrol как ItemsPanel.Почему изменение размера окна также может происходить за пределами элемента управления items?

Шаблоны:

<Style TargetType="{x:Type local:Dashboard}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:Dashboard}">
                <Grid>
                    <Border Background="{TemplateBinding Background}" 
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}">
                        <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                    </Border>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>

    <Setter Property="ItemsPanel">
        <Setter.Value>
            <ItemsPanelTemplate>
                <Canvas />
            </ItemsPanelTemplate>
        </Setter.Value>
    </Setter>
</Style>

Элементы используют это:

<Style TargetType="{x:Type local:Widget}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:Widget}">
                <Grid Background="{TemplateBinding Background}">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>

                    <Border Grid.Row="0" BorderThickness="2" BorderBrush="Black" Background="WhiteSmoke"
                            x:Name="Part_Header">
                        <ContentPresenter ContentSource="Header"/>
                    </Border>
                    <Border Grid.Row="1" BorderThickness="2" BorderBrush="Black" Background="WhiteSmoke">
                        <Grid>
                            <ContentPresenter />

                            <ResizeGrip x:Name="Part_Resize" 
                                HorizontalAlignment="Right"
                                VerticalAlignment="Bottom"
                                Cursor="SizeNWSE" />
                        </Grid>

                    </Border>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

1 Ответ

0 голосов
/ 26 августа 2011

В зависимости от настроек выравнивания и полей изменение размера родительского элемента может привести к тому, что дочерние элементы переместятся за пределы родительских границ.Самый простой способ проверить это - загрузить Blend и изменить размер родительского элемента, наблюдая за перемещением элементов управления.Изменяя привязки в Blend (который меняет выравнивание и поля), вы сможете выяснить причину их перемещения.

...