0

我需要在我的 Windows 商店应用程序中设置图像背景。

但是当我像下面的代码那样做时,图像覆盖了所有控件,我只能看到这个图像而不是控件,如何解决这个问题?

我看不到任何类型的ZIndex属性,并且设置Canvas.ZIndex不起作用。

看法:

<Grid.Background>
        <ImageBrush ImageSource="{Binding BackgroundSource}" />
</Grid.Background>

视图模型:

    private string _backgroundSource;
    public string BackgroundSource
    {
        get { return _backgroundSource; }
        set { _backgroundSource = value; RaisePropertyChanged(() => BackgroundSource); }
    }

   BackgroundSource = "Assets/Background/White.png";
4

1 回答 1

2

您的问题在于如何组织视觉树。在没有看到您的整个结构的情况下,实现目标的一种快速简便的方法是将背景放在其他所有内容后面。例如;

如果说你现在有一个Grid喜欢的父母;

<Grid>
   <Grid.Background>
       <ImageBrush ImageSource="{Binding BackgroundSource}" />
   </Grid.Background>

   <AllYourControls/>

</Grid>

你可以通过做这样的事情来解决它;

<Grid>

  <Grid>
     <Grid.Background>
         <ImageBrush ImageSource="{Binding BackgroundSource}" />
     </Grid.Background>
  </Grid>

   <AllYourControls/>

</Grid>

或嵌入它;

<Grid>
   <Grid.Background>
       <ImageBrush ImageSource="{Binding BackgroundSource}" />
   </Grid.Background>

   <Grid>
      <AllYourControls/>
   </Grid>

</Grid>

有多种方法可以通过树中的一个小组织来实现您的要求,并避免任何 z-index 或其他 hacky 技巧。

希望这可以帮助。

于 2013-11-13T19:41:29.730 回答