如何在WPF中为网格设置多个背景?

r7xajy2e  于 2022-12-14  发布在  其他
关注(0)|答案(2)|浏览(157)

我有一个网格,它有2行和3列。我需要2个背景图像为我的网格-一个将在另一个的顶部。(一个背景的ZIndex应该比其他背景大)。我如何才能做到这一点?
我将需要经常交换这两个背景,这意味着顶部背景将成为较低的背景和较低的背景将成为顶部背景。除此之外,这两个背景的图像也会发生很大的变化。
这个例子有一个网格,它的底部有一个文本切换器。作为背景,它有一个房间的图片。当我点击文本切换器中的“下一步”按钮时,我希望顶部的背景图片逐渐消失(doubleAnimation更新不透明度),并显示它下面的较低背景。也许我可以用一种更好的方式实现背景的逐渐切换,但老实说,我不知道如何做到这一点。x1c 0d1x

xqnpmsa8

xqnpmsa81#

您可以在VisualBrush内的Canvas上将它们绘制为两个图像,并将其用作背景:

<Grid>
    <Grid.Background>
        <VisualBrush>
            <VisualBrush.Visual>
                <Canvas Width="256" Height="256">
                    <Image Source="image1.png" Panel.ZIndex="1" /> <!-- This will appear over top of the other one -->
                    <Image Source="image2.png" Panel.ZIndex="0" /> 
                </Canvas>
            </VisualBrush.Visual>
        </VisualBrush>
    </Grid.Background>
</Grid>

然后可以直接在代码隐藏中或通过数据绑定设置Source和Panel.ZIndex。
这是一个有点不寻常的方式去做这件事,虽然,几乎可以肯定有一个更好的方式来做任何你实际上试图做的事情。

2wnc66cl

2wnc66cl2#

在这种情况下,我将使用数据绑定来绑定到视图模型中存储背景图像的属性。当条件更改和视图模型属性更改时,UI将反映这些更改。

相关问题