2015-03-04 2 views
0

У меня есть настраиваемый элемент управления, который содержит 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}"> 

Любая помощь очень ценится.

+0

Итак, в чем проблема? Не работает ли привязка ItemsSource? – Clemens

+0

Это не похоже. Поскольку источник данных принадлежит настраиваемому элементу управления, а не ItemsControl, я думал, что ему может понадобиться что-то вроде: ItemsSource = "{Binding DataContext.TimeSpanSlots}", но это, похоже, тоже не ловутся. – jidl

+0

DataContext наследуется ControlTemplate. Пока 'TimeSpanSlots' является свойством в' TimeSpanGridViewModel', привязка должна работать. – Clemens

ответ

1

Есть.

Я хранил XAML для пользовательского элемента управления в отдельном ResourceDictionary и не сливал его правильно в App.XAML.

@ Клеменс, вы правы, что он просто наследует DataContext. Ницца!

Смежные вопросы