【问题标题】:WPF binding child controls DataContext to HierarchicalDataTemplate ItemsSource itemWPF 将子控件 DataContext 绑定到 HierarchicalDataTemplate ItemsSource 项
【发布时间】:2022-01-17 20:31:09
【问题描述】:

我有一个包含位置集合的条形码集合。如何将自定义控件的 DataContext 设置为集合中的 Position 项?

    <TreeView ItemsSource="{Binding SelectedPlate.Barcodes}">
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Positions}"
                                  DataType="{x:Type ControlViewModels:BarcodeViewModel}">

                <TextBox Text="{Binding Code}"/>

                <HierarchicalDataTemplate.ItemTemplate>
                    <DataTemplate>

                        <!--The Custom Control that needs to bind to the Position item-->
                        <ControlViews:PositionControl DataContext="{Binding}"/>
                        
                    </DataTemplate>
                </HierarchicalDataTemplate.ItemTemplate>
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>

    </TreeView>

【问题讨论】:

    标签: wpf binding datacontext


    【解决方案1】:

    ItemTemplate 中的根元素继承了DataContext,因此您可以删除DataContext="{Binding}"

    <TreeView ItemsSource="{Binding SelectedPlate.Barcodes}">
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Positions}"
                                      DataType="{x:Type ControlViewModels:BarcodeViewModel}">
                <TextBox Text="{Binding Code}"/>
                <HierarchicalDataTemplate.ItemTemplate>
                    <DataTemplate>
                        <ControlViews:PositionControl />
                    </DataTemplate>
                </HierarchicalDataTemplate.ItemTemplate>
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>
    

    PositionControl 中,您可以直接绑定到Position 对象的公共属性,前提是您没有在某处显式设置控件的DataContext

    【讨论】:

    • 谢谢,我在 XAML 中设置了 DataContext。
    猜你喜欢
    • 2015-06-27
    • 1970-01-01
    • 2023-04-10
    • 2010-12-02
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多