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 について知ったので、それを試してみましたが、コンテンツにのみラップし、その中に残りのコントロールを表示しませんでした。

<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 に答える