在两个封装的ListView之间数据绑定wpf

时间:2018-04-02 08:30:32

标签: c# wpf listview

首先我要说的是,为了解释我的问题,我不清楚使用的语言 - 请原谅,如果我不能马上清楚的话。

wpf中的数据绑定对我来说不是很清楚,所以我无法找到解决以下问题的方法。我想通过嵌套ListView中的数据绑定引用包含ListView的嵌入式ListView的数据元素。可能我会盲目地看到森林里的树林......

在以下几点:

<TextBlock Text="{Binding DataContext.Id, ElementName=somename}"/>

我想引用包含ListView的dataelement。让我举个例子:

  • 约翰
    1. 周一
        

      这里我想使用John的数据

    2. 星期二
    3. ...
  • 彼得
  • 汤姆

名称是包含ListView,工作日是嵌套的ListView。

当然这是一个虚构的例子 - 但真正的例子太难解释了。

这是一个完整的&#34;代码示例:

                                    <ListView ItemsSource="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.PackagingTypeList}" BorderThickness="0" Name="somename" >
                                        <ListView.ItemTemplate>
                                            <DataTemplate>
                                                <StackPanel Orientation="Vertical" >
                                                    <!--Display Section for the first ListView -->
                                                    <TextBlock  Text="{Binding Name}"  />

                                                    <ListView ItemsSource="{Binding PackagingList}" BorderThickness="0" SelectedItem="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.Packaging_Selected}" >
                                                        <ListView.ItemTemplate >
                                                            <DataTemplate>
                                                                <WrapPanel  >
                                                                    <!--Display Section for the second ListView -->
                                                                    <TextBlock  Text="{Binding Id}"  />

                                                                    <TextBlock Text="{Binding DataContext.Id, ElementName=somename}"/>

                                                                </WrapPanel>
                                                            </DataTemplate>
                                                        </ListView.ItemTemplate>
                                                    </ListView>

                                                </StackPanel>
                                            </DataTemplate>
                                        </ListView.ItemTemplate>
                                    </ListView>

如果有人可以帮助我,我会非常感激。

祝你好运, Fabianus

1 个答案:

答案 0 :(得分:0)

非常感谢你的帮助!

最后两个解决方案都有效:

<TextBlock Text="{Binding DataContext.Id, ElementName=somename}"/>


<TextBlock Text="{Binding DataContext.Id, RelativeSource={RelativeSource FindAncestor, AncestorLevel=2, AncestorType=ListViewItem}}"/>