如何:更改 Margin 属性

更新:2007 年 11 月

此示例演示如何更改位于 Grid 中的子元素的 Margin 属性。此示例将定位值表示为 ListBoxItem 中的内容。这些值稍后将转换为 ThicknessMargin 的必需值)的实例。然后,值将被转换回为字符串,并显示为 TextBlock

示例

下面的示例将创建具有十个可选项的 ListBox 元素。SelectionChanged 事件触发 ChangeMargin 自定义方法,后面的代码示例将定义该方法。

在 可扩展应用程序标记语言 (XAML) 示例中,每个 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 自定义方法。此方法将 ListBoxItem 传递给 ThicknessConverter 对象,后者将 ListBoxItem Content 转换为 Thickness 的实例。(请注意,已经通过使用 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