Nasıl yapılır: Hiyerarşik Veriler ile Ana Öğe-Ayrıntı Desenini Kullanma

Bu örnek, ana ayrıntı senaryosunun nasıl uygulanacağını gösterir.

Örnek

Bu örnekte, LeagueList bir koleksiyonudur Leagues . Her birinin League Name ve koleksiyonu vardır ve her birinin bir Divisions Division adı ve koleksiyonu vardır Teams . Her birinin Team bir takım adı vardır.

<Window
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:src="clr-namespace:SDKSample"
  Width="400" Height="180"
  Title="Master-Detail Binding" 
  Background="Silver">
  <Window.Resources>
    <src:LeagueList x:Key="MyList"/>
  <DockPanel DataContext="{Binding Source={StaticResource MyList}}">
    <StackPanel>
      <Label>My Soccer Leagues</Label>
      <ListBox ItemsSource="{Binding}" DisplayMemberPath="Name"
               IsSynchronizedWithCurrentItem="true"/>
    </StackPanel>

    <StackPanel>
      <Label Content="{Binding Path=Name}"/>
      <ListBox ItemsSource="{Binding Path=Divisions}" DisplayMemberPath="Name"
               IsSynchronizedWithCurrentItem="true"/>
    </StackPanel>

    <StackPanel>
      <Label Content="{Binding Path=Divisions/Name}"/>
      <ListBox DisplayMemberPath="Name" ItemsSource="{Binding Path=Divisions/Teams}"/>
    </StackPanel>
  </DockPanel>
</Window>

Aşağıda, örneğin bir ekran görüntüsü verilmiştir. , Divisions ListBox İçindeki seçimleri otomatik olarak izler Leagues ListBox ve ilgili verileri görüntüler. Teams ListBox Diğer iki denetimin içindeki seçimleri izler ListBox .

Ana-ayrıntı senaryosu örneği gösteren ekran görüntüsü.

Bu örnekte dikkat etmeniz gereken iki şey şunlardır:

  1. Üç ListBox denetim aynı kaynağa bağlanır. PathBağlamanın özelliğini, hangi veri düzeyini göstermesini istediğinizi belirtmek için ayarlarsınız ListBox .

  2. Özelliğini, izlemekte olduğunuz IsSynchronizedWithCurrentItem true seçimin denetimlerinde ayarlamanız gerekir ListBox . Bu özelliğin ayarlanması, seçilen öğenin her zaman olarak ayarlanmasını sağlar CurrentItem . Alternatif olarak, ListBox verileri bir öğesinden alırsa, CollectionViewSource seçim ve para birimini otomatik olarak eşitler.

XML verileri kullanırken teknik biraz farklıdır. Bir örnek için bkz. HIYERARŞIK XML verileriyle Master-Detail modelini kullanma.

Ayrıca bkz.