Генерация панели ItemsControl

Кто-нибудь знает, как я могу определить, была ли сгенерирована панель itemscontrol?

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

Шаблон управления

    <Style TargetType="{x:Type local:DayTimeRange}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type local:DayTimeRange}">

                <Border Background="{TemplateBinding Background}"
                        BorderBrush="{TemplateBinding BorderBrush}"
                        BorderThickness="{TemplateBinding BorderThickness}">

                    <ItemsControl 
                                      Name="PART_ItemsControl" 
                                      AlternationCount="1"
                                      IsEnabled="{Binding HasTimeRange,RelativeSource={RelativeSource AncestorType=local:DayTimeRange}}">
                        <ItemsControl.ItemContainerStyle>
                            <Style>
                                <Setter Property="Grid.Row" Value="{Binding GridRow,Mode=OneWay}" />
                                <Setter Property="Grid.Column" Value="{Binding GridColumn,Mode=OneWay}" />
                                <Setter Property="Grid.RowSpan" Value="{Binding GridRowSpan,Mode=OneWay}" />
                                <Setter Property="Grid.ColumnSpan" Value="{Binding GridColumnSpan,Mode=OneWay}" />
                            </Style>
                        </ItemsControl.ItemContainerStyle>
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <Grid x:Name="PART_Panel" IsItemsHost="True"/>
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>
                    </ItemsControl>


                </Border>



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

Так какой же самый лучший способ получить реальную панель?

1 ответ

Вы можете просто использовать его Loaded событие и доступ к нему там. Что-то вроде:

XAML:

<Grid>
    <ItemsControl Loaded="OnItemsControlLoaded">

    </ItemsControl>
</Grid>

Код-за:

    private void OnItemsControlLoaded(object sender, RoutedEventArgs e)
    {
        var itemsControl = sender as ItemsControl;
        if (itemsControl != null)
        {
            // use here
        }
    }
Другие вопросы по тегам