如何:获取或设置画布定位属性

此示例演示如何使用元素的定位方法 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对象,该对象将ContentListBoxItem转换为Double的一个实例(请注意,此值已通过使用String方法转换为ToString)。 然后,将此值传回到 SetLeftGetLeftCanvas 方法,以更改 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

另请参阅