WPF / 04.05.2010

Novinky ve WPF 4 – bindable Run

J
Jarda Jirava
Autor článku
3 min
Čas čtení

V dnešním povídání si o novinkách v .NET Frameworku verze 4.0 se podívám opět na oblast, kterou jsem zmínil již minule a tou je Binding.

Run.Text

Už od prvních chvil, kdy světlo světa spatřilo WPF byla vlastnost Text třídy Run normální CLR property a tak bylo možné určovat, jaký text bude zobrazen v uživatelském rozhraní u uživatele. Co však bylo značnou nevýhodou bylo, že v okamžiku, kdy jsme chtěli a potřebovali měnit zobrazený text, tak jsme toto nemohli učinit jednoduše, neboť tato vlastnost Text nebyla typu DependencyProperty. Bylo tak nutné přerušit tok dokumentu, nejčastěji elementem TextBlock, a tomu nastavit požadovaný Binding na měnící se text.

TextBlock zapojený do FlowDocumentu

Jak také mohl vypadat takový text v kombinaci s elementem TextBlock vidíte na následujícím obrázku. Pro lepší demonstraci k čemu může dojít připojuji dvojí pohled:

Run-TextBlock

Že se vám na tom něco nezdá? Pro jistotu se podívejme, jak vypadal takový zápis ve FlowDocumentu:

<Window.Resources>
    <TextBox x:Key="DataStore1" Text="špatně umístěn, když použijeme TextBlock" />
</Window.Resources>
<FlowDocument>
    <Paragraph>
        <Run Text="Příklad toho, jak dokáže být text " />
        <TextBlock Text="{Binding Source={StaticResource DataStore1}, Path=Text}" />
        <Run Text=" uprostřed elementu Run." />
    </Paragraph>
</FlowDocument>

Bindable Run

Tento neduh s nevhodným zakomponováním elementu TextBlock však nemusíme od verze WPF 4.0 řešit a můžeme námi požadovaný text poskládat z jednotlivých elementu Run. Přesně tak, od této verze je vlastnost Text této třídy vedena jako DependencyProperty a tak můžeme využít všech výhod Bindingu, tady se tedy sluší podotknout, že se jedná o OneWay data binding. Obousměrný data binding je pak podporován jen částečně a v některých případech tak může dojít ke ztrátě informace o bindingu.

Jak potom vypadá tok textu s použitím bindingu na element Run předvádí následující obrázek:

Run-Run

A samozřejmě ještě přidám výpis XAMLu pro tento případ:

<Window.Resources>
    <TextBox x:Key="DataStore1" Text="špatně umístěn, když použijeme TextBlock" />
</Window.Resources>
<FlowDocument>
    <Paragraph>
        <Run Text="Příklad toho, jak dokáže být text " />
        <Run Text="{Binding Source={StaticResource DataStore1}, Path=Text}" />
        <Run Text=" uprostřed elementu Run." />
    </Paragraph>
</FlowDocument>

Závěrem

V tomto článku jsem představil další z novinek ve WPF 4.0 a to bindable Run. V článku příštím nás čeká poslední novinka, která se udála na poli data bindingu a která velice úzce souvisí i se změnou a rozšířením samotného .NET Frameworku ve verzi 4.0.

Komentáře (1)

Buďte první, kdo napíše komentář.
X
xaml.cz

Komunitní blog zaměřený na XAML, WPF, Silverlight a budoucnost desktopových a mobilních technologií.

© 2025 xaml.cz

Svelte 5 Tailwind CSS Bun