Silverlight 4 - Clipboard API

[Sledujte také náš twitter @Aglightcz, kde naleznete krátké zprávy nejen o novinkách na našem webu]

Třída, která zajišťuje přístup ke schránce, se nachází ve jmenném prostoru System.Windows.Clipboard. Ta zpřístupňuje 3 statické metody.

  • GetText – metoda získá text ze schránky
  • SetText - metoda vloží text do schránky
  • ContainsText  - metoda zjistí, zda-li schránka má nějaký obsah

 

Omezení

Pouze text (Unicode) můžeme získávat nebo vkládat do schránky. To je docela zásadní rozdíl oproti technologii WPF, kde bylo možné také pracovat například s obrázky.

Metody SetText a GetText můžeme vyvolat pouze v rámci uživatelovi interaktivity. Tedy v rámci události Click nebo Keydown. Každý jiný způsob přístupu ke schránce je ukončen výjimkou (SecurityException).

Běží-li aplikace v prohlížeči nebo je nainstalovaná na klientském počítači a nemá zapnutou zvýšenou důvěru (Elevated Trust), pak se uživateli objeví dialog s informací o přístupu do schránky. Uživatel má možnost přístup povolit nebo naopak zakázat. Při zákazu je vyvolána výjimka (SecurityException). Tento dialog se zobrazí pouze jednou za relaci (session).

ClipBoardDialog

Ukázka

V naší ukázce budeme mít dvě komponenty typu RichTextBox a dvě tlačítka. První RichTextBox bude sloužit jako zdroj pro kopírování  a druhý bude zobrazovat obsah schránky.

XAML kód aplikace může vypadat například takto:

 <Grid x:Name="LayoutRoot" Background="White">
        <RichTextBox HorizontalAlignment="Left" Name="richTextBox1" 
                     VerticalAlignment="Top" Width="190" Height="213" Margin="6,0,0,0"/>
        <RichTextBox HorizontalAlignment="Left" Margin="203,0,0,0" Name="richTextBox2" 
                     VerticalAlignment="Top" Height="213" Width="190" IsReadOnly="True" />
        <Button Content="Kopíruj" Height="23" HorizontalAlignment="Left" Margin="60,219,0,0" 
                Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
        <Button Content="Vlož" Height="23" HorizontalAlignment="Left" Margin="255,219,0,0" 
                Name="button2" VerticalAlignment="Top" Width="75" Click="button2_Click" />
    </Grid>

Vytvořili jsme si dva RichTextBoxy a dvě tlačítka pomocí kterých budeme kopírovat resp. vkládat text ze schránky.

Do metody pro kopírování(button1_Click) vložíme následující kód:

if (richTextBox1.Selection.Text.Length > 0)
            {
                Clipboard.SetText(richTextBox1.Selection.Text);
            }

Prvně otestujeme zda-li v prvním RichTextBoxu máme vybraný nějaký text. Pokud ano, tak přes statickou metodu SetText() tento text přidáme do schránky.

Do metody pro vložení textu ze schránky(button2_Click) přidáme následující kód:

if (Clipboard.ContainsText())
        richTextBox2.Selection.Text = Clipboard.GetText();
 

V případě, že se ve schránce nachází nějaký text (Clipboard.ContainsText()), pak tento text vložíme ze schránky (Clipboard.GetText()) na označené místo v druhém RichTextBoxu.

 

Výsledná aplikace

Get Microsoft Silverlight

Do levého RichTextBoxu napíšeme nějaký text. Poté text, který chceme vložit do schránky, označíme a klikneme na tlačítko Kopírovat. Pomocí tlačítka vložit, pak vložíme text ze schránky do pravého RichTextBoxu. 

Shrnutí

  • Statická třída System.Windows.Clipboard
  • Tři statické metody - GetText, SetText, ContainsText
  • Pracuje se pouze s textem
  • Volání GetText a SetText pouze v rámci uživatelovi interaktivity
  • Aplikace v prohlížeči nebo v OOB bez zvýšené důvěry požaduje souhlas uživatele k přístupu do schránky
Ohodnoťte článek: starstarstarstarstar

Komentáře

Přidat komentář

jméno

text komentáře

opište text z obrázku


O autorovi

David Beinhauer

David Beinhauer

Působí jako Microsoft Student Partner a pracuje jako vývojář v jedné nadnárodní firmě. Zajímá se o webové technologie a počítačovou grafiku. Pozornost také věnuje hernímu průmyslu

web: www.aglight.cz

©2010 | David Beinhauer | Lukáš Kubis