2013-06-14 1 views
0

Я использую шаблон элемента, чтобы определить, как должны отображаться строки моей сетки. Определение сетки (упрощенно) показывает, что исходный шаблон элемент GridRows (коллекция строк):Как переопределить ItemSource, определенный для ItemTemplate?

<grid ...> 
    (...) 
    <ScrollViewer 
      ItemTemplate="{StaticResource GridRowItemDataTemplate}" 
      ItemsSource="{Binding GridRows}" /> 
    </ScrollViewer> 
</grid> 

До сих пор, так хорошо.

В шаблоне элемента, текстовое поле связан с ImportZoneName, который решен, конечно, GridRows[i].ImportZoneName, и это именно то, что я хочу:

<DataTemplate x:Key="GridRowItemDataTemplate"> 
    <Grid> 
     <TextBlock {Binding ImportZoneName}" /> 
     <ComboBox 
      SelectedItem="{Binding SelectedModelingTypeValue}" 
      ItemsSource="{Binding ModelingTypes}" /> 
    </Grid> 
</DataTemplate> 

Теперь проблема: Я также хочу, чтобы связать поле со списком к другому имуществу (ModelingTypes) моей модели просмотра. Это свойство никак не связано с GridRows. Как я могу сказать WPF переопределить (или забыть) источник шаблона элемента?

Многие, огромное спасибо!

BTW, я не нашел еще простое руководство для этих простых связывающих случаев ... Если кто-нибудь есть ссылка на такое руководство, Я благословлю его/ее навсегда :)

ответ

2

Вы можете получить DataContext родительский список, как это:

<DataTemplate x:Key="GridRowItemDataTemplate"> 
    <Grid> 
     <TextBlock {Binding ImportZoneName}" /> 
     <ComboBox 
      SelectedItem="{Binding SelectedModelingTypeValue}" 
      ItemsSource="{Binding DataContext.ModelingTypes, 
          RelativeSource={RelativeSource FindAncestor, 
          AncestorType=Grid}}" /> 
    </Grid> 
</DataTemplate> 

Replace Grid с типом сетки, которую вы используете (не уверена, какой он есть, не виден из вопроса), до тех пор, как его DataContext обладает свойством ModelingTypes

+0

Да, да, это 'сидеть ! Я попробовал что-то подобное раньше, но у меня была еще одна ошибка: Value and Name не были объявлены как свойства ... Черт! Теперь он работает отлично. Еще раз спасибо :) – SRO

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