将组合框绑定到项目控件中
本文关键字:项目 控件 绑定 组合 | 更新日期: 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,而不是数据对象。