다음을 통해 공유


방법: Margin 속성 변경

업데이트: 2007년 11월

이 예제에서는 Grid에 있는 자식 요소의 Margin 속성을 변경하는 방법을 보여 줍니다. 이 예제에서는 위치 지정 값을 ListBoxItem의 콘텐츠로 나타냅니다. 이러한 값은 나중에 Thickness 인스턴스로 변환됩니다. 이 인스턴스는 Margin의 필수 값입니다. 그런 다음 값을 문자열로 다시 변환하여 TextBlock으로 표시합니다.

예제

다음 예제에서는 선택할 수 있는 항목 10개가 있는 ListBox 요소를 만듭니다. SelectionChanged 이벤트는 ChangeMargin 사용자 지정 메서드를 트리거합니다. 이 사용자 지정 메서드는 이후의 코드 예제에서 정의합니다.

XAML(Extensible Application Markup Language) 예제에서 각 ListBoxItem은 요소의 공통 여백을 설명하는 데 사용되는 Thickness 값을 나타냅니다. 하지만 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 개체로 전달하고, 이 개체는 ListBoxItemContentThickness 인스턴스로 변환합니다. (이 값은 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 +".";
        }

전체 샘플을 보려면 모눈의 여백 변경 샘플을 참조하십시오.

참고 항목

작업

방법: ListBoxItem을 새 데이터 형식으로 변환

방법: ThicknessConverter 개체 사용

참조

Grid

ThicknessConverter

Margin

ListBox