次の方法で共有


方法 : Margin プロパティを変更する

更新 : 2007 年 11 月

Grid 内にある子要素の Margin プロパティを変更する方法を次の例に示します。この例は、ListBoxItem 内のコンテンツとして配置の値を表します。これらの値は後で、Margin に必須な値である Thickness のインスタンスに変換されます。その後、この値は文字列に再度変換され、TextBlock として表示されます。

使用例

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

Extensible Application Markup Language (XAML) の例の ListBoxItem はそれぞれ、要素の均一な余白を示すために使用される Thickness 値の 1 つを表します。ただし、ListBoxItem を使用して Thickness のインスタンスを表すには、あらかじめ適切なデータ型に変換しておく必要があります。変換のコード例を次に示します。

<ListBox Grid.Row="0" Grid.Column="1" 
         Width="50" Height="50" 
         VerticalAlignment="Top" 
         SelectionChanged="ChangeMargin">
    <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 の選択項目を変更すると、ChangeMargin カスタム メソッドが呼び出されます。このメソッドから ListBoxItemThicknessConverter オブジェクトに渡され、このオブジェクトによって ListBoxItem の ContentThickness のインスタンスに変換されます (この値は既に ToString メソッドを使用して文字列に変換されていることに注意してください)。この値は、text1 オブジェクトの Margin として渡され、動的にそのオブジェクトの位置を変更します。

Private Sub ChangeMargin(ByVal sender As Object, ByVal args As SelectionChangedEventArgs)

    Dim li As ListBoxItem = CType(CType(sender, ListBox).SelectedItem, ListBoxItem)
    Dim myThicknessConverter As ThicknessConverter = New ThicknessConverter()
    Dim th1 As Thickness = CType(myThicknessConverter.ConvertFromString(li.Content.ToString()), Thickness)
    text1.Margin = th1
    Dim st1 As String = CType(myThicknessConverter.ConvertToString(text1.Margin), String)
    gridVal.Text = "The Margin property is set to " + st1 + "."
End Sub
     private void ChangeMargin(object sender, SelectionChangedEventArgs args)
        {
            ListBoxItem li = ((sender as ListBox).SelectedItem as ListBoxItem);
            ThicknessConverter myThicknessConverter = new ThicknessConverter();
            Thickness th1 = (Thickness)myThicknessConverter.ConvertFromString(li.Content.ToString());
            text1.Margin = th1;
            String st1 = (String)myThicknessConverter.ConvertToString(text1.Margin);
            gridVal.Text = "The Margin property is set to " + st1 +".";
        }

サンプル全体については、「Grid のマージンの変更のサンプル」を参照してください。

参照

処理手順

方法 : ListBoxItem を新しいデータ型に変換する

方法 : ThicknessConverter オブジェクトを使用する

参照

Grid

ThicknessConverter

Margin

ListBox