将组合框绑定到项目控件中

本文关键字:项目 控件 绑定 组合 | 更新日期: 2023-09-27 17:58:51

我正在尝试用项目列表(ParentCredentials)填充一个组合框,它是itemscontrol的一部分。问题是这些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类的一部分。

将组合框绑定到项目控件中

您需要导航回ItemsControl,并通过DataContext路径绑定。

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

Source={RelativeSource...在任何情况下都不起作用。此外,AncestorType始终是一些FrameworkElement,而不是数据对象。