HOW TO:取得或設定 Canvas 定位屬性
更新:2007 年 11 月
本範例示範如何使用 Canvas 項目的定位方法來放置子內容。本範例使用 ListBoxItem 中的內容來代表定位值,並將值轉換為 Double 的執行個體,這個執行個體是定位時必要的引數。接著使用 GetLeft 方法將值轉換回字串,並且在 TextBlock 項目中顯示為文字。
範例
下列範例會建立具有 11 個可選取 ListBoxItem 項目的 ListBox 項目。SelectionChanged 事件會觸發 ChangeLeft 自訂方法,後續的程式碼區塊會定義這個方法。
每個 ListBoxItem 都分別表示一個 Double 值,這是 Canvas 的 SetLeft 方法接受的其中一個引數。為了要使用 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 物件,此物件再將 ListBoxItem 的 Content 轉換成 Double 的執行個體 (請注意,這個值已經藉由使用 ToString 方法轉換成 String)。然後這個值會傳送回 Canvas 的 SetLeft 和 GetLeft 方法,以變更 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 定位屬性範例。