此示例演示如何使用元素的定位方法 Canvas 定位子内容。 此示例使用内容 ListBoxItem 来表示定位值并将值转换为实例 Double,这是定位的必需参数。 然后,这些值将转换回字符串,并通过使用TextBlock方法在GetLeft元素中显示为文本。
示例:
以下示例创建一个具有 11 个 ListBox 可选 ListBoxItem 元素的元素。 该 SelectionChanged 事件触发 ChangeLeft 自定义方法,后续代码块定义该方法。
每个ListBoxItem代表一个Double值,它是SetLeft的方法Canvas接受的参数之一。 若要使用 a 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 所选内容时,它将调用 ChangeLeft 自定义方法。 此方法将ListBoxItem传递给一个LengthConverter对象,该对象将Content的ListBoxItem转换为Double的一个实例(请注意,此值已通过使用String方法转换为ToString)。 然后,将此值传回到 SetLeft 的 GetLeft 和 Canvas 方法,以更改 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