2017-02-02 3 views
0

私はListBoxを持っていて、背景をタイル状のImageBrushでマッピングしました。 ListBoxにたくさんのアイテムがあり、それを下にスクロールすると、背景は同じ位置にとどまります。WPF - リストボックスの背景をスクロールバーと一緒にスクロールすることは可能ですか?

バックグラウンドをスクロールバーと一緒にスクロールすることはできますか?もしそうなら、どうですか?背景がListBoxItemよりも大きいので、私が代わりにListBoxItemImageBrush背景をマッピングすることができないこと

<ListBox ItemsSource="{Binding ItemsSource}"> 
    <ListBox.Background> 
     <ImageBrush ImageSource="pack://application:,,,/NS;Assets/background.png" TileMode="Tile" ViewPortUnits="Absolute" Viewport="0,0,400,300"/> 
    </ListBox.Background> 
</ListBox> 

注意。

+0

ここで提案をお試しください:[リストビューとスクロールバックグラウンドイメージ](http://stackoverflow.com/a/17913691/6741868)。そのリストビューでも、リストボックスでも機能します。 –

+0

ありがとう、私の質問は同じように見えます。しかし、どの提案が良いですか?私は受け入れられた答えを見ていないと@ GarryVassの提案はそこにもありません。 – kurakura88

+0

その質問に対する唯一の答えはうまくいくようですが、かなりのコーディングが必要です。 –

答えて

1

あり、これを行うために、よりエレガントな方法は確かにありますが、1つの簡単な選択肢は、以下のように行うことです。

<ScrollViewer> 
    <Grid> 
     <Image Source="MyBackground.png" Stretch="None" Height="{Binding ActualHeight, ElementName=ItemsContainer}" VerticalAlignment="Top" /> 
     <ListBox x:Name="ItemsContainer" ItemsSource="{Binding ItemsSource}" Background="Transparent" VerticalAlignment="Top" /> 
    </Grid> 
</ScrollViewer> 

@edit やタイル張り:

<ScrollViewer> 
    <Grid> 
     <Grid VerticalAlignment="Top" Height="{Binding ActualHeight, ElementName=ItemsContainer}"> 
      <Grid.Background> 
       <ImageBrush ImageSource="MyBackground.png" TileMode="Tile" ViewportUnits="[...]" Viewport="[...]" /> 
      </Grid.Background> 
     </Grid> 
     <ListBox x:Name="ItemsContainer" ItemsSource="{Binding ItemsSource}" Background="Transparent" VerticalAlignment="Top" /> 
    </Grid> 
</ScrollViewer> 

が、結果は次のようになり:

Output

+0

イメージをタイル貼りする必要がある場合、それを動作させる方法は? – kurakura88

+0

@ kurakura88タイル版を追加する答えを編集 –

+0

ありがとう!私の 'ListBox'はサイズを調整することができるので、' Height = "{Binding ActualHeight、...}、' MaxHeight = "{Binding ActualHeight、...' – kurakura88

関連する問題