次の方法で共有


方法 : Canvas の配置プロパティを取得または設定する

更新 : 2007 年 11 月

この例では、Canvas 要素の配置メソッドを使用して子要素を配置する方法を示します。この例では、ListBoxItem 内のコンテンツを使用して配置の値を表し、その値を、配置に必要な引数である Double のインスタンスに変換します。次に、この値を文字列に戻し、GetLeft メソッドを使用して TextBlock 要素にテキストとして表示します。

使用例

次の例では、11 個の選択可能な ListBoxItem 要素を持つ ListBox 要素を作成します。SelectionChanged イベントは、後続のコード ブロックで定義される ChangeLeft カスタム メソッドをトリガします。

ListBoxItem は、Double 値を表します。この値は、CanvasSetLeft メソッドが受け入れる引数の 1 つです。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 カスタム メソッドが呼び出されます。このメソッドは ListBoxItemLengthConverter オブジェクトに渡します。このオブジェクトは、ListBoxItemContentDouble のインスタンスに変換します (この値は、ToString メソッドを使用して既に String に変換されていることに注意してください)。この値は、text1 オブジェクトの位置を変更するために、CanvasSetLeft メソッドと GetLeft メソッドに渡されます。

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