在WPF中使用Ancestor ItemsSource

时间:2017-06-28 08:04:41

标签: wpf data-binding

类别:

class ViewModel
{
    public List<Example> ListExample { get; }
}
class Example
{
    public List<string> Names { get; }
    public Visibility IsVisible { get; }
    public List<Example> Children { get; }
}

的Xaml:

<ItemsControl ItemsSource="{Binding ListExample}"
              Name="Base">
   <ItemsControl.ItemTemplate>
      ...
      <ListView ItemsSource="{Binding Names}"
                Name="List1">
          <ListView.ItemTemplate>
              ...
              <StackPanel>
                  <ContentPresenter Content="{Binding }"/>
                  <Expander Visibility="{Binding IsVisible}">
                      <ListView ItemsSource="{Binding Children}"
                                Name="List2">
                          ...
                      </ListView>
                  </Expander>
              </StackPanel>
          </ListView.ItemTemplate>
      </ListView>
  </ItemsControl.ItemTemplate>
</ItemsControl>

我已经尝试了各种RelativeSource方法,但无法使其正常工作。

由于我将List1中的Name绑定为ItemsSource,因此我无法在Expander中访问List2中的Children或IsVisible。 我想知道是否可以从ItemsControl中的ListExample返回到Example元素。

2 个答案:

答案 0 :(得分:1)

给出以下模型:

x % y

它看起来像这样:

U8

答案 1 :(得分:1)

您可以使用这样的DataContext绑定到父ListView的{​​{1}}:

{RelativeSource}