Silverlight で WrapPanel に子を追加する最良の方法は何ですか? 私は C# を使用しており、サムネイルと関連情報を含む画像を含む JSON オブジェクトを読み込んでいます。
最終的な目標は、サムネイルのグリッド (水平方向に 950px に横方向に 13 個の親指、垂直方向に 6 個の親指) を作成することです。
Silverlight で WrapPanel に子を追加する最良の方法は何ですか? 私は C# を使用しており、サムネイルと関連情報を含む画像を含む JSON オブジェクトを読み込んでいます。
最終的な目標は、サムネイルのグリッド (水平方向に 950px に横方向に 13 個の親指、垂直方向に 6 個の親指) を作成することです。
コードに項目を追加することに直面した場合、通常、より良い方法があります。
ListBox を作成し、その ItemsSource をリストに設定する (または DataContext にバインドする) のはどうですか。サムネイルと情報を表示する DataTemplate を作成し、(これが重要な部分です) WrapPanel を使用して ItemsPanelTemplate を作成します。
<Grid x:Name="ImageThumbnails">
<ListBox
ItemsSource="{Binding}"
Width="950"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<Image Source="{Binding Thumbnail}" Width="80" Height="60"/>
<TextBlock Text="{Binding ImageName}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
</Grid>
次に、コードで、JSON 呼び出しからデータを取得したら、次のようにします。
this.ImageThumbnails.DataContext = thumbnailListFromJSON;
リストが ObservableCollection の場合、リストへの変更は自動的に UI に反映されます。
(上記のコードは疑似コードとして扱われるべきです - 明らかに、データ構造を反映するように変更する必要があります)
編集: ScrollViewer.HorizontalScrollBarVisibility="Disabled" を ListBox に追加しました。スクロールビューアが水平方向に無限に拡大するのを止めるため、これは重要です。この WrapPanel がないと、1 行のリストボックスになります。
このような状況には、UniformGrid が最適です。残念ながら、これは Silverlight フレームワークの一部ではありません。ただし、利用可能な WPF バージョンのいくつかのポートがあります。
WrapPanel は Panel から派生しているため、Children.Add(control) を使用するだけです。WrapPanel はすべてのレイアウトを処理します。それがその仕事です。