2010-11-09 3 views
1

Предположим, у меня есть пользовательский элемент управления, который привязан к виртуальной машине. Эта виртуальная машина имеет свойство для списка MyList.Как получить контрольный родительский DataContext для привязки элементов к элементу?

Внутри пользовательского элемента управления у меня есть ComboBox, я хочу, чтобы установить следующий вид XAML

<Grid x:Name="LayoutRoot" Background="White"> 
      <StackPanel HorizontalAlignment="Stretch"> 
       <sdk:DataGrid ItemsSource="{Binding YourList}" IsReadOnly="True" AutoGenerateColumns="False" > 
        <sdk:DataGrid.Columns>      
         <sdk:DataGridTextColumn Header="Name" Binding="{Binding Name}" /> 
         <!-- ...... --> 
         <sdk:DataGridTemplateColumn Header="User" > 
          <sdk:DataGridTemplateColumn.CellTemplate> 
           <DataTemplate> 
            <ComboBox ItemsSource="{Binding ElementName=LayoutRoot, Path=DataContext.MyList}" DisplayMemberPath="Value" SelectedValuePath="Key" SelectedValue="{Binding UserID}" ></ComboBox> 
           </DataTemplate> 
          </sdk:DataGridTemplateColumn.CellTemplate> 
         </sdk:DataGridTemplateColumn> 

        </sdk:DataGrid.Columns> 
       </sdk:DataGrid> 
      </StackPanel> 
    </Grid> 

, но он не работает.

Как решить эту проблему?

+0

Почему вы пытаетесь сделать привязку Element to Element здесь? Разве вы не пытаетесь связать источник этого ComboBox с MyList на вашем ViewModel? Если это так, вы должны просто сделать это: ItemsSource = "{Binding MyList}" Возможно, я не понимаю, что вы подразумеваете под «родителем», можете ли вы показать больше кода? – JSprang

ответ

1

Это сработало. Это был ItemSource для ComboBox, который находился в пределах DataGrid:

 ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=sdk:DataGrid}, 
Path=DataContext.Teams}"> 
Смежные вопросы