在WPF中的Wrap面板中创建恒定大小的背景图像

Rav*_*dda 1 html css c# wpf

我想实现一个容器,其中包含可滚动的列表项目我正在使用图像设置换行面板的背景,但此图像根据换行面板的项目进行拉伸.我想修复背景,以便内容可以滚动,但不会拉伸背景图像.我使用以下代码.

<ScrollViewer x:Name="imageScrollViewer" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
            <WrapPanel x:Name="panel" Orientation="Horizontal" >
                <WrapPanel.Background>
                    <VisualBrush>
                        <VisualBrush.Visual>
                            <Image Name="pnlBackground">
                                <Image.OpacityMask>
                                    <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5" >
                                        <GradientStop Offset="0.0" Color="#00000000" />
                                        <GradientStop Offset="1.0" Color="#FF000000" />
                                    </LinearGradientBrush>
                                </Image.OpacityMask>
                            </Image>
                        </VisualBrush.Visual>
                    </VisualBrush>
                </WrapPanel.Background>                    
                <ListBox 
                Margin="5" 
                SelectionMode="Extended" 
                ItemsSource="{Binding}" 
                SelectedIndex="0" 
                 d:IsHidden="True">                        
                </ListBox>
            </WrapPanel>
        </ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

Vin*_*mar 5

而不是为WrapPanel设置背景,尝试为ScrollViewer设置背景.我希望它能解决您的问题.

<ScrollViewer x:Name="imageScrollViewer" 
                      VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
        <ScrollViewer.Background>
            <VisualBrush>
                <VisualBrush.Visual>
                    <Image  Name="pnlBackground" Source="F:\\TempScreen.PNG">
                        <Image.OpacityMask>
                            <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5" >
                                <GradientStop Offset="0.0" Color="#00000000" />
                                <GradientStop Offset="1.0" Color="#FF000000" />
                            </LinearGradientBrush>
                        </Image.OpacityMask>
                    </Image>
                </VisualBrush.Visual>
            </VisualBrush>
        </ScrollViewer.Background>
        <WrapPanel x:Name="panel" Orientation="Horizontal" >

            <ListBox 
            Margin="5" 
            SelectionMode="Extended" 

            SelectedIndex="0" 
             >
            </ListBox>
        </WrapPanel>
    </ScrollViewer>
Run Code Online (Sandbox Code Playgroud)