У меня есть настраиваемый элемент управления, который содержит ItemControl. DataContext для настраиваемого элемента управления настроен на viewmodel.Как ссылаться на коллекцию viewmodel в пользовательском контроле ItemsControl
Я хотел бы, чтобы Item Items ItemControl указывал на Наблюдаемую коллекцию (TimeSpanSlots) в модели представления. Я в настоящее время:
<Style TargetType="{x:Type tsvw:TimeSpanGridView}">
<Setter Property="DataContext" Value="{Binding TimeSpanGridViewModel, Mode=OneWay, Source={StaticResource Locator}}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type tsvw:TimeSpanGridView}">
<Border Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<ItemsControl ItemsSource="{Binding TimeSpanSlots}">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type tsvm:TimeSpanSlot}">
<Label Content="Time"/>
</DataTemplate>
</ItemsControl.Resources>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid support:GridHelpers.RowCount="96"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Grid.Row" Value="{Binding GridRow}" />
<Setter Property="Grid.RowSpan" Value="{Binding GridRowSpan}"/>
<Setter Property="Grid.Column" Value="0"/>
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
я могу получить эту работу хорошо, если у меня есть UserControl и изменить что ItemsControl. Я просто не уверен в синтаксисе ссылок в ControlTemplate.
Эта часть, в частности:
<ItemsControl ItemsSource="{Binding TimeSpanSlots}">
Любая помощь очень ценится.
Итак, в чем проблема? Не работает ли привязка ItemsSource? – Clemens
Это не похоже. Поскольку источник данных принадлежит настраиваемому элементу управления, а не ItemsControl, я думал, что ему может понадобиться что-то вроде: ItemsSource = "{Binding DataContext.TimeSpanSlots}", но это, похоже, тоже не ловутся. – jidl
DataContext наследуется ControlTemplate. Пока 'TimeSpanSlots' является свойством в' TimeSpanGridViewModel', привязка должна работать. – Clemens