2012-03-02 13 views
0

今、リストボックス内にスクロールビューアとスタックパネルが配置され、データリストがビューリストのコレクションにバインドされています。ObservableCollectionをリストボックス内のグリッドにバインドする

私はフォトリストクラスを持っています。このクラスはイメージのパスとパスを保持し、リストボックスにバインドしています。

<Style TargetType="{x:Type ListBox}"> 
    <Setter Property="Foreground" Value="White" /> 
    <Setter Property="Margin" Value="100"/> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type ListBox}" > 
      <ScrollViewer> 
      <StackPanel IsItemsHost="True" Orientation="Horizontal" HorizontalAlignment="Center"/> 
      </ScrollViewer> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

上記のコードは、複数の画像をホストするスクロールバーとスタックパネルでリストボックスを正しく表示しています。

ここでは、画像が行列形式のように配置されるように、スクロールビューアとスタックパネルの代わりにグリッドを持つようにリストボックスを変更したいと思います。

フォトリストをグリッドにバインドするコードスニペットを入力してください(リストボックス内にあるスクロールビューア内)。

ご協力いただければ幸いです。

答えて

1

あなたはWrapPanelを使用して試みることができる、あなたはすべての細胞が必要な場合は、同じサイズは、ここからの回答を使用する:WPF WrapPanel - all items should have the same width

+0

こんにちはスクローグ、私はスタックパネルをラッパネルに変更しましたが、もし私がスクロールビューワを持っていれば、ラッパパネルはスタックパネルのように動作します。スクロールビューアを削除すると、画像はグリッド状に表示されます。 scrollviewerとwrappanelの両方をグリッドのように動作させるにはどうしたらいいですか? – Questions

+0

@Scrogg、スクロールビューアの表示を変更した後は、正常に動作します。あなたの助けに感謝。 – Questions

+0

WrapPanelの幅を指定できます。 – Scroog1

0

あなたはWrapPanelを使用するために、あなたのスタイルを変更する必要があります。

<Style TargetType="{x:Type ListBox}"> 
    <Setter Property="Foreground" Value="White" /> 
    <Setter Property="Margin" Value="100"/> 
    <Setter Property="ItemTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <Border BorderThickness="1" Margin="6"> 
        <Image Source="{Binding Path=ImageUri}" Stretch="Fill" Width="100" Height="120" /> 
       </Border> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="ItemsPanel"> 
     <Setter.Value> 
      <ItemsPanelTemplate> 
       <WrapPanel /> 
      </ItemsPanelTemplate> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled" /> 
</Style> 
関連する問題