21

ItemsControl子アイテムがのように配置される場所を作成したいのですWrapPanelが、子アイテムはできるだけ多くのスペースをとる必要があります。ウィンドウサイズが大きくなったり小さくなったりしたときに、子アイテムが特定の幅:高さの比率に従って伸びるようにします。ItemsControl子アイテムが'sから追加または削除される場合、子アイテムの幅:高さの比率を維持するために、アイテム間に適切に改行を配置ItemsSourceする必要があります。 以下は私がこれまでに持っているものです。Xamlでこれを行うことは可能ですか?または、このためのカスタムコントロールを作成する必要がありますか?前もって感謝します!WrapPanel

<Window>
<Grid>
    <ItemsControl ItemsSource="{Binding DataCollection}">
       <ItemsControl.ItemsPanel>
          <ItemsPanelTemplate>
             <WrapPanel Orientation="Vertical"/>
          </ItemsPanelTemplate>
       </ItemsControl.ItemsPanel>
       <ItemsControl.ItemTemplate>
          <DataTemplate>
             <Border BorderBrush="Black" BorderThickness="1" HorizontalAlignment="Stretch">
                <StackPanel Orientation="Horizontal" >
                   <TextBlock TextWrapping="Wrap" Text="{Binding Name}" />
                   <TextBlock TextWrapping="Wrap" Text="{Binding Value}"/>
                   <TextBlock TextWrapping="Wrap" Text="{Binding Time,  StringFormat='hh:mm:ss' }"/>
                </StackPanel>
             </Border>          
         </DataTemplate>
       </ItemsControl.ItemTemplate>
    </ItemsControl>
</Grid>
</Window>
4

4 に答える 4

19

UniformGridではなくを使用してくださいWrapPanelColumnsプロパティで必要な列の数を設定するだけで、目的の結果が得られます。

于 2011-11-16T00:53:18.430 に答える
0

目的の動作を実現するには、たとえば次の方法で、WidthまたはMaxWidthのプロパティを使用しようとする場合がありますWrapPanel

        <ListView
            Name="RootControl"
            ItemsSource="{Binding [icons]}"
            ItemTemplate="{StaticResource IconTemplate}">
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <WrapPanel
                        Width="{Binding ElementName=RootControl, Path=ActualWidth}"/>
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>
        </ListView>

できます ここに画像の説明を入力

于 2019-01-18T12:36:02.073 に答える
-2

項目コントロールで Horizo​​ntalContentAlignment="Stretch" プロパティを試しましたか。

于 2011-11-04T08:31:03.350 に答える