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.