我有ListBox
,我用平铺ImageBrush
映射背景。当我在ListBox
中有很多项目并向下滚动时,背景会保持在同一位置。
是否可以将背景与滚动条一起滚动?如果是这样,怎么样?
<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>
请注意,背景大于ListBoxItem
,因此我无法将ImageBrush
背景映射到ListBoxItem
。
答案 0 :(得分:2)
有一些更优雅的方法可以做到这一点,但一个简单的替代方法是做如下:
<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>
结果将是: