翻译转换WPF - ListBox

时间:2013-09-20 08:32:44

标签: wpf xaml layout transform render

我有一个包含少量项目的ListBox。我需要将translate transform应用于其中一个项目,以便其他项目分别进行排列。假如我将Y =“100”设置为第二项,则第二项(第一项除外)下的其他项目应向下移动100像素。

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

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

非常感谢任何其他方法。

此致

1 个答案:

答案 0 :(得分: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;