XAML WPF:如何将数据从列表绑定到Treeview节点内的ComboBox

gupuwyp2  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(133)

我正在尝试将UserLevelCategories列表中的数据绑定到Treeview中的ComboBox。UserLevelCategories列表位于另一个列表-systemBranches中。
产品型号:

public class SystemBranchViewModel
{
    public int LocalSystemId { get; set; }
    public string LocalSystemName { get; set; }
    public List<BranchModel> Branches { get; set; }
    public List<UserLevelCategoryModel> UserLevelCategories { get; set; }
}

字符串
代码隐藏:

List<SystemBranchViewModel> systemBranches = new List<SystemBranchViewModel>();
systemBranches = getDataService.GetSystemBranchesByUser();
Branch_List.ItemsSource = systemBranches;


XAML:

<TreeView Name="Branch_List">
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type branch:SystemBranchViewModel}" ItemsSource="{Binding Branches}">
            <TextBlock Text="{Binding LocalSystemName}" />
        </HierarchicalDataTemplate>
        <DataTemplate DataType="{x:Type branch:BranchModel}">
            <WrapPanel>
                <CheckBox IsChecked="{Binding IsBranchActiveToUser}" />
                <TextBlock Text="{Binding BranchName }" />
            </WrapPanel>
        </DataTemplate>
        <DataTemplate DataType="{x:Type branch:UserLevelCategoryModel}">
            <ComboBox ItemsSource="{Binding UserLevelCategories}"
                      DisplayMemberPath="{Binding UserLevelCategoryName}"
                      SelectedValuePath="{Binding UserLevelCategoryId}"/>
        </DataTemplate>
    </TreeView.Resources>
</TreeView>


输出应该如下所示:

  • 系统A
  • 公司名称1
  • 公司名称2
  • 权限:ComboBox -UserLevelCategoryName 1 -UserLevelCategoryName 2
  • 系统B
  • 公司名称1
  • 公司名称2
  • 权限:ComboBox -UserLevelCategoryName 1 -UserLevelCategoryName 2
sshcrbum

sshcrbum1#

如果你把ComboBox放在BranchModel的模板中,你可以像这样绑定到父DataContext的父UserLevelCategories属性:

<ComboBox ItemsSource="{Binding DataContext.UserLevelCategories, 
    RelativeSource={RelativeSource AncestorType=TreeViewItem, AncestorLevel=2}}" ... />

字符串
对于UserLevelCategoryModel类型,您不需要单独的模板。

相关问题