Генерация панели 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
}
}