Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数据模板中的数据模板无法使用绑定_C#_Wpf_Binding_Datatemplate - Fatal编程技术网

C# 数据模板中的数据模板无法使用绑定

C# 数据模板中的数据模板无法使用绑定,c#,wpf,binding,datatemplate,C#,Wpf,Binding,Datatemplate,我有一个带有嵌套ItemTemplate的ListView,用于显示订单。 每个订单在扩展器中呈现。这些扩展器有一个ContentTemplate,用于显示每个订单中的所有位置。这些订单位置也在一个扩展器中。 ListView从包含所有订单的ObservableCollection AvailableOrders获取数据。这些order对象有一个ObservableCollection项,保存该订单的所有位置。 但是我不能让绑定正常工作。如何正确设置内部扩展器的绑定以显示有关项目的信息 感谢所有

我有一个带有嵌套ItemTemplate的ListView,用于显示订单。 每个订单在扩展器中呈现。这些扩展器有一个ContentTemplate,用于显示每个订单中的所有位置。这些订单位置也在一个扩展器中。 ListView从包含所有订单的ObservableCollection AvailableOrders获取数据。这些order对象有一个ObservableCollection项,保存该订单的所有位置。 但是我不能让绑定正常工作。如何正确设置内部扩展器的绑定以显示有关项目的信息

感谢所有的想法

<ListView ItemsSource="{Binding VMOrder.AvailableOrders}">
<ListView.ItemTemplate>
    <DataTemplate>
        <Expander Content="{Binding}">
            <Expander.HeaderTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <TextBlock Text="Order " />
                        <TextBlock Text="{Binding Id}" />
                    </StackPanel>
                </DataTemplate>
            </Expander.HeaderTemplate>
            <Expander.ContentTemplate>
                <DataTemplate>
                    <ItemsControl ItemsSource="{Binding Items}">
                        <ItemsControl.Template>
                            <ControlTemplate>
                                <Expander>
                                    <Expander.HeaderTemplate>
                                        <DataTemplate>
                                            <TextBlock Text="{Binding Material.Name}" />
                                        </DataTemplate>
                                    </Expander.HeaderTemplate>
                                    <Expander.ContentTemplate>
                                        <DataTemplate>
                                            <TextBlock Text="TEST" />
                                        </DataTemplate>
                                    </Expander.ContentTemplate>
                                </Expander>
                            </ControlTemplate>
                        </ItemsControl.Template>
                    </ItemsControl>
                </DataTemplate>
            </Expander.ContentTemplate>
        </Expander>
    </DataTemplate>
</ListView.ItemTemplate>
</ListView>

对于内部ItemsControl,您已经为整个控件定义了控件模板。您必须定义ItemTemplate

  <ItemsControl ItemsSource="{Binding Items}">
      <ItemsControl.ItemTemplate>
          <DataTemplate>
              <Expander>
                  <Expander.HeaderTemplate>
                      <DataTemplate>
                          <TextBlock Text="{Binding Material.Name}" />
                      </DataTemplate>
                  </Expander.HeaderTemplate>
                  <Expander.ContentTemplate>
                      <DataTemplate>
                          <TextBlock Text="TEST" />
                      </DataTemplate>
                  </Expander.ContentTemplate>
              </Expander>
          </DataTemplate>
      </ItemsControl.ItemTemplate>
  </ItemsControl>

对于内部ItemsControl,您已经为整个控件定义了控件模板。您必须定义ItemTemplate

  <ItemsControl ItemsSource="{Binding Items}">
      <ItemsControl.ItemTemplate>
          <DataTemplate>
              <Expander>
                  <Expander.HeaderTemplate>
                      <DataTemplate>
                          <TextBlock Text="{Binding Material.Name}" />
                      </DataTemplate>
                  </Expander.HeaderTemplate>
                  <Expander.ContentTemplate>
                      <DataTemplate>
                          <TextBlock Text="TEST" />
                      </DataTemplate>
                  </Expander.ContentTemplate>
              </Expander>
          </DataTemplate>
      </ItemsControl.ItemTemplate>
  </ItemsControl>
我现在明白了。 我需要在数据模板中使用相对源,并设置每个扩展器的内容属性

<ListView ItemsSource="{Binding VMOrder.AvailableOrders}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Expander Content="{Binding}">
                <Expander.HeaderTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="Order " />
                            <TextBlock Text="{Binding DataContext.Id, RelativeSource={RelativeSource FindAncestor, AncestorType=Expander}}" />
                        </StackPanel>
                    </DataTemplate>
                </Expander.HeaderTemplate>
                <Expander.ContentTemplate>
                    <DataTemplate>
                        <ItemsControl ItemsSource="{Binding Items}">
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <Expander Content="{Binding}">
                                        <Expander.HeaderTemplate>
                                            <DataTemplate>
                                                <TextBlock Text="{Binding DataContext.Material.Name, RelativeSource={RelativeSource FindAncestor, AncestorType=Expander}}" />
                                            </DataTemplate>
                                        </Expander.HeaderTemplate>
                                        <Expander.ContentTemplate>
                                            <DataTemplate>
                                                <TextBlock Text="{Binding DataContext.Material.Description, RelativeSource={RelativeSource FindAncestor, AncestorType=Expander}}" />
                                            </DataTemplate>
                                        </Expander.ContentTemplate>
                                    </Expander>
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ItemsControl>
                    </DataTemplate>
                </Expander.ContentTemplate>
            </Expander>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
我现在明白了。 我需要在数据模板中使用相对源,并设置每个扩展器的内容属性

<ListView ItemsSource="{Binding VMOrder.AvailableOrders}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Expander Content="{Binding}">
                <Expander.HeaderTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <TextBlock Text="Order " />
                            <TextBlock Text="{Binding DataContext.Id, RelativeSource={RelativeSource FindAncestor, AncestorType=Expander}}" />
                        </StackPanel>
                    </DataTemplate>
                </Expander.HeaderTemplate>
                <Expander.ContentTemplate>
                    <DataTemplate>
                        <ItemsControl ItemsSource="{Binding Items}">
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <Expander Content="{Binding}">
                                        <Expander.HeaderTemplate>
                                            <DataTemplate>
                                                <TextBlock Text="{Binding DataContext.Material.Name, RelativeSource={RelativeSource FindAncestor, AncestorType=Expander}}" />
                                            </DataTemplate>
                                        </Expander.HeaderTemplate>
                                        <Expander.ContentTemplate>
                                            <DataTemplate>
                                                <TextBlock Text="{Binding DataContext.Material.Description, RelativeSource={RelativeSource FindAncestor, AncestorType=Expander}}" />
                                            </DataTemplate>
                                        </Expander.ContentTemplate>
                                    </Expander>
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ItemsControl>
                    </DataTemplate>
                </Expander.ContentTemplate>
            </Expander>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>