我的环境是Windows Phone 7.1。
我有以下代码:
<ListBox ItemsSource="{Binding Path=Items}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<Canvas Background="Black" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Canvas Width="200" Height="400"
Canvas.Top="400"> <====== This is not working
... Some content ...
</Canvas>
</DataTemplate>
</ListBox.ItemTemplate>
有一个ListBox
Canvas
为ItemsPanel
。
ListBoxItems
本身也属于Canvas
类型。对于ListBoxItems
我设置Canvas.Top =400
,我希望ItemsPanel
中的项目偏移量为400。
不幸的是,这不起作用,项目的偏移量为0,如此图所示(ItemsPanel
为黑色,彩色矩形为listitem):
为什么ListBoxItems
的偏移量不是400?
答案 0 :(得分:4)
您在Canvas.Top
的内容上设置ListBoxItems
而非实际项目
当使用画布作为项目面板时,您必须记住您的datatemplated对象包含在ListboxItems
ListBox
Canvas <- your itemtemplate
ListBoxItem
Canvas <- your datatemplate
溶液:
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Canvas.Top" Value="400"/>
</Style>
</ListBox.ItemContainerStyle>
答案 1 :(得分:2)
尝试将此添加到您的ListBox
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>
因为您看到,黑区是ListBox
,而不是您的ListBoxItem
。由于“常见的错误”,如果我们仍然可以调用它,ListBoxItem
不会延伸,除非您添加上面的代码。