Sdílet prostřednictvím


Postupy: Získání nebo nastavení vlastností umístění plátna

Tento příklad ukazuje, jak použít metody umístění prvku Canvas k umístění podřízeného obsahu. Tento příklad používá obsah v ListBoxItem k reprezentaci hodnot umístění a převede hodnoty na instance Double, což je povinný argument pro umístění. Hodnoty se pak převedou zpět na řetězce a zobrazí se jako text v elementu TextBlock pomocí metody GetLeft.

Příklad

Následující příklad vytvoří ListBox prvek, který má jedenáct vybratelných ListBoxItem elementů. Událost SelectionChanged aktivuje ChangeLeft vlastní metodu, kterou definuje následující blok kódu.

Každý ListBoxItem představuje Double hodnotu, což je jeden z argumentů, které SetLeft metoda Canvas přijímá. Chcete-li použít ListBoxItem k reprezentaci instance Double, musíte nejprve převést ListBoxItem na správný datový typ.

<ListBox Grid.Column="1" Grid.Row="1" VerticalAlignment="Top" Width="60" Margin="10,0,0,0" SelectionChanged="ChangeLeft">
  <ListBoxItem>Auto</ListBoxItem>      
  <ListBoxItem>10</ListBoxItem>
  <ListBoxItem>20</ListBoxItem>
  <ListBoxItem>30</ListBoxItem>
  <ListBoxItem>40</ListBoxItem>
  <ListBoxItem>50</ListBoxItem>
  <ListBoxItem>60</ListBoxItem>
  <ListBoxItem>70</ListBoxItem>
  <ListBoxItem>80</ListBoxItem>
  <ListBoxItem>90</ListBoxItem>
  <ListBoxItem>100</ListBoxItem>      
</ListBox>

Když uživatel změní výběr ListBox, vyvolá vlastní metodu ChangeLeft. Tato metoda předá ListBoxItem objektu LengthConverter, který převede ContentListBoxItem na instanci Double (všimněte si, že tato hodnota již byla převedena na String pomocí metody ToString). Tato hodnota se pak předá zpět do SetLeft a GetLeft metod Canvas, aby se změnila pozice objektu text1.

private void ChangeLeft(object sender, SelectionChangedEventArgs args)
{
    ListBoxItem li = ((sender as ListBox).SelectedItem as ListBoxItem);
    LengthConverter myLengthConverter = new LengthConverter();
    Double db1 = (Double)myLengthConverter.ConvertFromString(li.Content.ToString());
    Canvas.SetLeft(text1, db1);
    String st1 = (String)myLengthConverter.ConvertToString(Canvas.GetLeft(text1));
    canvasLeft.Text = "Canvas.Left = " + st1;
}
Private Sub ChangeLeft(ByVal sender As Object, ByVal e As SelectionChangedEventArgs)
    Dim li As ListBoxItem = CType(CType(sender, ListBox).SelectedItem, ListBoxItem)
    Dim myLengthConverter As New LengthConverter
    Dim db1 As Double = CType(myLengthConverter.ConvertFromString(li.Content.ToString()), Double)
    Canvas.SetLeft(text1, db1)
    Dim st1 As String = CType(myLengthConverter.ConvertToString(Canvas.GetLeft(text1)), String)
    canvasLeft.Text = "Canvas.Left = " + st1
End Sub

Viz také