1

我有 WrapPanel,我希望它内部的控件水平居中,但是当我有一个列表框或 ItemsControl 时,这些元素只会向下。

<toolkit:WrapPanel>

    <ItemsControl x:Name="AnswerListBox" ItemsSource="{Binding Answers}" ScrollViewer.VerticalScrollBarVisibility="Disabled" >
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <!-- those don't wrap horizontally and go downwards -->
                <local:spriteToggleButton Text="{Binding text}" Selected="{Binding selected}" Sprites="{Binding Path=DataContext.UISprites, ElementName=questionField}" IsChecked="{Binding selected, Mode=TwoWay}" GroupName="{Binding Path=DataContext.QuestionTitle, ElementName=questionField}" ClickMode="Press" />
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

</toolkit:WrapPanel>

我遇到了一些类似的问题并发现了有关 ItemsPanel 的信息,因此我尝试了该方法,但它仅包装到 Content 并且没有在其中显示控件的其余部分。

<ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
        <toolkit:WrapPanel />
    </ItemsPanelTemplate>
</ItemsControl.ItemsPanel>

我认为 ItemsPanel 告诉 ItemsControl 用哪个控件包装它,但它似乎忽略了我的数据模板的其余部分。

4

1 回答 1

1

约瑟夫,

这里在黑暗中拍摄;但这就是我使用 WrapPanel 的方式(不是通过 ItemControl)。

<ListBox> 
   <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
             <toolkit:WrapPanel Width="700" />
        </ItemsPanelTemplate>
   </ListBox.ItemsPanel>
   <ListBox.ItemTemplate>
         <DataTemplate>
         ....
         </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

本质上,Listbox 的 ItemsPanel 告诉它使用 WrapPanel,然后您就可以在 DataTemplate 中拥有您需要的任何东西。请注意,宽度很重要,因为它告诉 WrapPanel 从哪里开始包装。

这有帮助吗?

于 2011-08-05T20:00:58.057 回答