共用方式為


HOW TO:取得或設定 Canvas 定位屬性

更新:2007 年 11 月

本範例示範如何使用 Canvas 項目的定位方法來放置子內容。本範例使用 ListBoxItem 中的內容來代表定位值,並將值轉換為 Double 的執行個體,這個執行個體是定位時必要的引數。接著使用 GetLeft 方法將值轉換回字串,並且在 TextBlock 項目中顯示為文字。

範例

下列範例會建立具有 11 個可選取 ListBoxItem 項目的 ListBox 項目。SelectionChanged 事件會觸發 ChangeLeft 自訂方法,後續的程式碼區塊會定義這個方法。

每個 ListBoxItem 都分別表示一個 Double 值,這是 CanvasSetLeft 方法接受的其中一個引數。為了要使用 ListBoxItem 表示 Double 的執行個體,您必須先將 ListBoxItem 轉換為正確的資料型別。

<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>
<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>

當使用者變更 ListBox 選項時,它會叫用 ChangeLeft 自訂方法。這個方法會將 ListBoxItem 傳送給 LengthConverter 物件,此物件再將 ListBoxItemContent 轉換成 Double 的執行個體 (請注意,這個值已經藉由使用 ToString 方法轉換成 String)。然後這個值會傳送回 CanvasSetLeftGetLeft 方法,以變更 text1 物件的位置。

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
     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;
        }

如需完整範例,請參閱 Canvas 定位屬性範例

請參閱

概念

面板概觀

參考

Canvas

ListBoxItem

LengthConverter