我有一个包含ItemsControl的自定义控件。自定义控件的DataContext设置为viewmodel。
我希望ItemsControl的ItemSource指向视图模型中的Observable Collection( 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}">
任何帮助都非常感激。
答案 0 :(得分:1)
知道了。
我将自定义控件的XAML保存在单独的ResourceDictionary中,并且没有在App.XAML中正确合并。
@Clemens你是对的,它只是继承了DataContext。尼斯!