Condividi tramite


Procedura: eseguire l'associazione di un insieme e visualizzare informazioni in base alla selezione effettuata

In un semplice scenario Master-Details si dispone di un elemento ItemsControl associato ai dati come ListBox. In base alla selezione dell'utente vengono visualizzate più informazioni relative all'elemento selezionato. In questo esempio viene illustrato come implementare tale scenario.

Esempio

In questo esempio People è un oggetto ObservableCollection<T> delle classi Person. Questa classe Person contiene tre proprietà, FirstName, LastName e HomeTown, tutte di tipo string.

<Window x:Class="SDKSample.Window1"
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="clr-namespace:SDKSample"
  Title="Binding to a Collection"
  SizeToContent="WidthAndHeight">
  <Window.Resources>
    <local:People x:Key="MyFriends"/>


...


  </Window.Resources>

  <StackPanel>
    <TextBlock FontFamily="Verdana" FontSize="11"
               Margin="5,15,0,10" FontWeight="Bold">My Friends:</TextBlock>
    <ListBox Width="200" IsSynchronizedWithCurrentItem="True"
             ItemsSource="{Binding Source={StaticResource MyFriends}}"/>
    <TextBlock FontFamily="Verdana" FontSize="11"
               Margin="5,15,0,5" FontWeight="Bold">Information:</TextBlock>
    <ContentControl Content="{Binding Source={StaticResource MyFriends}}"
                    ContentTemplate="{StaticResource DetailTemplate}"/>
  </StackPanel>
</Window>

ContentControl utilizza l'oggetto DataTemplate riportato di seguito che definisce il modo in cui vengono presentate le informazioni di Person:

<DataTemplate x:Key="DetailTemplate">
  <Border Width="300" Height="100" Margin="20"
          BorderBrush="Aqua" BorderThickness="1" Padding="8">
    <Grid>
      <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
        <RowDefinition/>
      </Grid.RowDefinitions>
      <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
      </Grid.ColumnDefinitions>
      <TextBlock Grid.Row="0" Grid.Column="0" Text="First Name:"/>
      <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding Path=FirstName}"/>
      <TextBlock Grid.Row="1" Grid.Column="0" Text="Last Name:"/>
      <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Path=LastName}"/>
      <TextBlock Grid.Row="2" Grid.Column="0" Text="Home Town:"/>
      <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Path=HomeTown}"/>
    </Grid>
  </Border>
</DataTemplate>

Di seguito è disponibile una schermata del risultato dell'esempio. ContentControl mostra le altre proprietà della persona selezionata.

Binding to a Collection

Si notino i due aspetti dell'esempio riportati di seguito:

  1. ListBox e ContentControl sono associati alla stessa origine. Le proprietà Path di entrambe le associazioni non sono specificate perché entrambi i controlli vengono associati all'intero oggetto Collection.

  2. È necessario impostare la proprietà IsSynchronizedWithCurrentItem su true perché funzioni. L'impostazione di questa proprietà assicura che l'elemento selezionato sia sempre impostato come CurrentItem. In alternativa, se ListBox ottiene i dati da un oggetto CollectionViewSource, la selezione e la valuta vengono sincronizzate automaticamente.

L'override del metodo ToString viene eseguito dalla classe Person nel modo seguente. Per impostazione predefinita, ListBox chiama ToString e visualizza una rappresentazione di stringa di ogni oggetto nell'insieme associato. Questo è il motivo per cui ogni oggetto Person viene visualizzato come nome nel controllo ListBox.

Public Overrides Function ToString() As String
    Return Me._firstname.ToString
End Function
public override string ToString()
{
    return firstname.ToString();
}

Vedere anche

Attività

Procedura: utilizzare il modello Master-Details con dati gerarchici

Procedura: utilizzare il modello Master-Details con dati XML gerarchici

Concetti

Cenni preliminari sull'associazione dati

Cenni preliminari sui modelli di dati

Altre risorse

Procedure relative all'associazione dati