Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ukázka WPFDataBinding ukazuje použití datové vazby v klientovi WPF (Windows Presentation Foundation). Ukázka používá službu WCF (Windows Communication Foundation), která náhodně generuje pole alb, které se vrátí klientovi. Každé album má název, cenu a seznam skladeb alba. Skladby alba mají název a dobu trvání. Informace vrácené službou jsou automaticky vázány na uživatelské rozhraní (UI) poskytované klientem Windows Presentation Foundation (WPF).
Poznámka:
Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.
Datová vazba umožňuje, aby byl zdroj dat automaticky svázán s uživatelským rozhraním. To zjednodušuje programovací model, protože nevyžaduje, abyste každý prvek uživatelského rozhraní programově aktualizovali daty z datového objektu nebo pole datových objektů. Objekt můžete svázat s jedním prvkem uživatelského rozhraní nebo polem s ovládacím prvkem, který přebírá více vstupů, například ListBox. Následující kód ukazuje, jak svázat data s DataContext prvkem uživatelského rozhraní.
// 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;
}
V předchozí ukázce je prvek rozložení DataContext s názvem grid nastaven na data vrácená metodou myPanel.
DataContext umožňuje prvkům dědit informace z jejich nadřazených prvků o zdroji dat používaném pro vazbu, stejně jako další charakteristiky vazby, například cestu. Řádek kódu se musí spustit při každé aktualizaci dat na serveru. Spustí se například při inicializaci okna a při přidání nového alba.
V následujícím ukázkovém kódu XAML ListBox určuje ItemsSource="{Binding }".
<ListBox
ItemTemplate="{StaticResource AlbumStyle}"
ItemsSource="{Binding }"
IsSynchronizedWithCurrentItem="true" />
Určuje, že data vázaná na prvek uživatelského rozhraní nejvyšší úrovně jsou také vázána na tento ovládací prvek (to znamená pole Alb). Kromě toho určuje šablonu dat, ItemTemplate="{StaticResource AlbumStyle}" která se má použít pro každou položku v objektu ListBox. Můžete také definovat šablony dat a určit způsob formátování dat. Tyto šablony dat je možné opakovaně použít pro jiné prvky uživatelského rozhraní v aplikaci. Výhodou je, že je šablona dat definovaná a udržována na jednom místě.
Šablona AlbumStyle dat definuje mřížku se dvěma TextBlock vedle sebe. Jedna určuje název alba a druhý počet stop v albu.
<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>
Následující kód XAML vytvoří druhý ListBox.
<ListBox Grid.Row="2"
Grid.ColumnSpan="2"
ItemTemplate="{StaticResource TrackStyle}"
ItemsSource="{Binding Path=Tracks}" />
Kód určuje cestu pro ItemsSource. To znamená, že data svázaná s tímto ovládacím prvku nejsou daty nejvyšší úrovně, ale vlastností dat nejvyšší úrovně pojmenovaných Tracks. Tato vlastnost představuje seznam skladeb obsažených v albu. Kromě toho je specifikován jiný název DataTemplate nazvaný TrackStyle. Rozložení šablony TrackStyle je podobné šabloně AlbumStyle, ale prvky TextBlock jsou svázány s různými vlastnostmi. Je to proto, že se tyto dvě šablony používají s různými datovými objekty.
Jak nastavit, sestavit a spustit ukázku
Ujistěte se, že jste provedli instalační proceduru One-Time pro ukázky Windows Communication Foundation.
Pokud chcete sestavit verzi C# nebo Visual Basic .NET řešení, postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.
Pokud chcete spustit ukázku v konfiguraci pro jeden počítač nebo pro více počítačů, postupujte podle pokynů v Spuštění ukázek Windows Communication Foundation.