如何访问嵌套的列表框?

本文关键字:列表 嵌套 何访问 访问 | 更新日期: 2023-09-27 17:49:15

<Grid x:Name="ContentPanel3" Grid.Row="1" Margin="12,0,12,0">
  <ScrollViewer>
    <StackPanel>
      <ListBox Height="500" Padding="2" Name="listBox1" ItemsSource="{Binding School}" Width="460">
        <ListBox.ItemTemplate>
          <DataTemplate>
            <StackPanel>
              <TextBlock Name="elementtype" Text="{Binding type}"/>
              <ListBox x:Name="underlist" ItemsSource="{Binding listschoolclass}" ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
                <ListBox.ItemTemplate>
                  <DataTemplate>
                    <StackPanel>
                      <TextBlock Name="elementssalle" Text="{Binding room}"/>
                      <TextBlock Name="elementsdebut" Text="{Binding teacher}"/>
                    </StackPanel>
                  </DataTemplate>
                </ListBox.ItemTemplate>
              </ListBox>
            </StackPanel>
          </DataTemplate>
        </ListBox.ItemTemplate>
      </ListBox>
    </StackPanel>
  </ScrollViewer>
</Grid>

这是我的问题:在示例中,我可以使用这种方法访问元素listBox1:例如listBox1.ItemSource = ...。但是我无法到达元素underlist,它是嵌套的Listbox

如何访问嵌套的列表框?

您可以在

等资源中定义下列表
  <Window.Resources>
    <ListBox x:Key="underlist" ItemsSource="{Binding listschoolclass}" ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Name="elementssalle" Text="{Binding room}"/>
                    <TextBlock Name="elementsdebut" Text="{Binding teacher}"/>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Window.Resources>

然后你的主xaml就像

  <Grid x:Name="ContentPanel3" Grid.Row="1" Margin="12,0,12,0">
    <ScrollViewer>
        <StackPanel>
            <ListBox Height="500" Padding="2" Name="listBox1" ItemsSource="{Binding School}" Width="460">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBlock Name="elementtype" Text="{Binding type}"/>
                            <ContentControl Content="{StaticResource underlist}"/>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </StackPanel>
    </ScrollViewer>
</Grid>
在.cs文件中

可以通过

访问资源
this.FindResource("underList")