0

我有一个 ListBox,里面有几个项目。我需要将翻译转换应用于其中一项,以便其他项目应分别排列。假设我将 Y="100" 设置为第二个项目,那么第二个项目下的其他项目(第一个项目除外)应该向下移动 100 像素。

我虽然布局转换会这样做(而不是渲染 trnasform)。但似乎翻译不适用于布局转换。

http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.layouttransform.aspx

任何其他方法都非常感谢。

问候,

4

1 回答 1

0

为了翻译 ListBox 中的项目,您可以将Margin其容器的属性设置为ItemContainerStyle

<ListBox ItemsSource="{Binding}">
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="Margin" Value="{Binding ItemMargin}"/>
        </Style>
    </ListBox.ItemContainerStyle>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding ItemText}"/>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

设置Margin项目容器的 而不是项目的容器(例如 DataTemplate 中的 TextBlock)可以防止选择矩形覆盖边距区域。

添加如下所示的项目会在第一个项目和第二个项目之间创建 100 像素的间隙。

var items = new List<object>();
items.Add(new { ItemText = "Item 1", ItemMargin = new Thickness() });
items.Add(new { ItemText = "Item 2", ItemMargin = new Thickness(0, 100, 0, 0) });
items.Add(new { ItemText = "Item 3", ItemMargin = new Thickness() });
DataContext = items;
于 2013-09-20T10:18:25.837 回答