Megosztás:


Adatkötés egy Windows Presentation Foundation kliensben

A WPFDataBinding minta bemutatja az adatkötés használatát a Windows Presentation Foundation (WPF) ügyfélprogramban. A minta egy Windows Communication Foundation (WCF) szolgáltatást használ, amely véletlenszerűen generál egy albumtömböt az ügyfélhez való visszatéréshez. Az egyes albumoknak van egy neve, egy ára, és egy lista az album számainak. Az album dalai nevekkel és időtartamokkal rendelkeznek. A szolgáltatás által visszaadott információk automatikusan a Windows Presentation Foundation (WPF) ügyfél által biztosított felhasználói felülethez (UI) lesznek kötve.

Megjegyzés:

A minta telepítési eljárása és összeállítási utasításai a témakör végén találhatók.

Az adatkötés lehetővé teszi az adatforrások felhasználói felülethez való automatikus kötését. Ez leegyszerűsíti a programozási modellt, mivel nem szükséges, hogy az egyes felhasználói felületi elemeket programozott módon frissítse egy adatobjektumból vagy adatobjektum-tömbből származó adatokkal. Egy objektumot egyetlen felhasználói felületi elemhez köthet, míg egy tömböt olyan vezérlőhöz, amely több bemenetet fogad, például egy ListBox. Az alábbi kód bemutatja, hogyan lehet adatokat kötni egy DataContext felhasználói felületi elemhez.

// Event handler executed when call is complete
void client_GetAlbumListCompleted(object sender, GetAlbumListCompletedEventArgs e)
{
    // This is on the UI thread, myPanel can be accessed directly
    myPanel.DataContext = e.Result;
}

A korábbi példában a DataContext a grid elrendezési elem, amely myPanel névvel van ellátva, a GetAlbumList metódus által visszaadott adatokra van beállítva. Ez DataContext lehetővé teszi, hogy az elemek a szülőelemeiktől örököljék a kötéshez használt adatforrás adatait, valamint a kötés egyéb jellemzőit, például az elérési utat. A kódsort minden alkalommal végre kell hajtani, amikor a kiszolgálón lévő adatok frissülnek. A rendszer például az ablak inicializálásakor és új album hozzáadásakor hajtja végre.

Az alábbi XAML-mintakódban a ListBox meghatározza ItemsSource="{Binding }".

<ListBox
          ItemTemplate="{StaticResource AlbumStyle}"
          ItemsSource="{Binding }"
          IsSynchronizedWithCurrentItem="true" />

Ez azt határozza meg, hogy a legfelső szintű felhasználói felületi elemhez kötött adatok is ehhez a vezérlőelemhez (vagyis az Albumok tömbjéhez) tartoznak. Emellett a ItemTemplate="{StaticResource AlbumStyle}" megadja az adatsablont, amelyet az egyes elemekhez használni kell a ListBox. Adatsablonokat is definiálhat az adatok formázásának módjához. Ezek az adatsablonok újra felhasználhatók az alkalmazás más felhasználói felületi elemeihez, ennek előnye, hogy az adatsablon egy helyen van definiálva és karbantartva.

Az AlbumStyle adatsablon egy rácsot helyez el, amely két TextBlock-ből áll, egymás mellett. Az egyik megadja az album nevét, a másik pedig az albumban lévő számok számát.

<DataTemplate x:Key="AlbumStyle">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="260" />
            <ColumnDefinition Width="60" />
        </Grid.ColumnDefinitions>
        <TextBlock Grid.Column="0" TextContent="{Binding Path=Title}" />
        <TextBlock Grid.Column="1" TextContent="{Binding Path=Tracks#.Count}" HorizontalAlignment="Right" />
    </Grid>
</DataTemplate>

A következő XAML-kód létrehoz egy második ListBox.

<ListBox Grid.Row="2"
            Grid.ColumnSpan="2"
            ItemTemplate="{StaticResource TrackStyle}"
            ItemsSource="{Binding Path=Tracks}" />

A kód megadja egy útvonalat a ItemsSource számára. Ez azt jelzi, hogy a vezérlőhöz rendelt adatok nem önálló felső szintű elemek, hanem a felső szintű adat neve Tracks egy tulajdonsága. Ez a tulajdonság az albumban található zeneszámok tömbje. Emellett egy másik, DataTemplate nevű TrackStyle van megadva. A sablon elrendezése TrackStyle hasonló a AlbumStyle sablonéhoz, de az TextBlocks-ek különböző tulajdonságokhoz vannak kötve. Ennek az az oka, hogy a két sablon különböző adatobjektumokkal van használatban.

A példa beállítása, elkészítése és futtatása

  1. Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták One-Time beállítási eljárását.

  2. A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse Windows Communication Foundation-mintákcímű témakör utasításait.

  3. Ha a mintát egy vagy több gép közötti konfigurációban szeretné futtatni, kövesse A Windows Communication Foundation-minták futtatásacímű témakör utasításait.