Como obter ou definir propriedades de posicionamento de tela
Este exemplo mostra como usar os métodos de posicionamento do elemento Canvas para posicionar o conteúdo filho. Este exemplo usa conteúdo em um ListBoxItem para representar valores de posicionamento e converte os valores em instâncias de Double, que é um argumento necessário para posicionamento. Os valores são então convertidos novamente em cadeias de caracteres e exibidos como texto em um elemento TextBlock usando o método GetLeft.
Exemplo
O exemplo a seguir cria um elemento ListBox que tem onze elementos ListBoxItem selecionáveis. O evento SelectionChanged dispara o método personalizado ChangeLeft
, que o bloco de código subsequente define.
Cada ListBoxItem representa um valor Double, que é um dos argumentos que o método SetLeft de Canvas aceita. Para usar um ListBoxItem para representar uma instância de Double, você deve primeiro converter o ListBoxItem para o tipo de dados correto.
<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>
Quando um usuário altera a seleção de ListBox, ele invoca o método personalizado ChangeLeft
. Esse método passa o ListBoxItem para um objeto LengthConverter, que converte o Content de um ListBoxItem em uma instância de Double (observe que esse valor já foi convertido em um String usando o método ToString). Esse valor é então passado de volta para os métodos SetLeft e GetLeft de Canvas para alterar a posição do objeto 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
Ver também
- Canvas
- ListBoxItem
- LengthConverter
- Visão geral dos painéis
.NET Desktop feedback