Привязать выпадающий список внутри элемента управления - PullRequest
1 голос
/ 08 июня 2011

Я пытаюсь заполнить комбинированный список, который является частью элемента управления, списком элементов (ParentCredentials). Проблема в том, что эти ParentCredentials находятся на том же уровне, что и элементы, связанные с помощью itemscontrol. Не уверен, что это понятно, но если вы посмотрите на модель представления, это должно иметь больше смысла

Это моя модель:

 public class AccessControlViewModel : INotifyPropertyChanged
    {
 public ObservableCollection<LogonCredential> Credentials 
        {...}
  public List<string> ParentCredentials
        {...}
}

И у меня есть следующий XAML.

<ItemsControl ItemsSource="{Binding AccessControl.Credentials}" HorizontalContentAlignment="Stretch">
       <ItemsControl.ItemTemplate>
       <DataTemplate>                              
             <Grid  >
                 <Grid.ColumnDefinitions >
                     <ColumnDefinition Width="*" />
                     <ColumnDefinition Width="*"/>
                     <ColumnDefinition Width="*"/>
                 </Grid.ColumnDefinitions>                                    

             <Label  Grid.Column="0" Content="{Binding Path=DisplayName}"/>  
             <ComboBox Grid.Column="2" ItemsSource="{Binding Source={RelativeSource AncestorType={x:Type vm:ResourceViewModel}}, Path=AccessControl.ParentCredentials}">                                          
             </ComboBox>
           ...

Как я могу сделать эту привязку? Также обратите внимание, что AccessControl является частью класса ResourceViewModel.

1 Ответ

2 голосов
/ 08 июня 2011

Вам необходимо вернуться обратно к ItemsControl и выполнить привязку по пути DataContext.

{Binding RelativeSource={RelativeSource AncestorType=ItemsControl}, Path=DataContext.AccessControl.ParentCredentials}

Source={RelativeSource... никогда не работает ни в коем случае.Кроме того, AncestorType всегда является некоторым FrameworkElement, а не объектом данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...