我有一个包含少量项目的ListBox。我需要将translate transform应用于其中一个项目,以便其他项目分别进行排列。假如我将Y =“100”设置为第二项,则第二项(第一项除外)下的其他项目应向下移动100像素。
我虽然布局转换会这样做(而不是渲染trnasform)。但似乎翻译不适用于布局转换。
http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.layouttransform.aspx
非常感谢任何其他方法。
此致
答案 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;