网格背景的多个属性,如ImageSource和Brush

时间:2014-08-15 09:13:37

标签: c# xaml windows-phone-8

我有一个绑定到属性MainImage的XAML代码:

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

MainImage是一个ImageSource属性。但是,现在我想设置简单的网格刷背景。应用程序使用ImageSource,如果有图像,否则app必须设置简单的Brush颜色。如果可能的话,从Brush到ImageSource的转换存在问题。

2 个答案:

答案 0 :(得分:1)

我会使用OnLoaded事件并检查空值并以这种方式进行更改。除非你想创建一个图像,然后将其绘制成某种颜色并将其作为图像源返回。除非你自己动手,否则我认为没有任何后备。


<Grid x:Name="my_grid" Loaded="my_grid_Loaded">
  <Grid.Background>
    <ImageBrush ImageSource="{Binding MainImage}"/>
  </Grid.Background>
</Grid>

private void my_grid_Loaded(object sender, RoutedEventArgs e)
{        
    Grid g = sender as Grid;
    System.Windows.Media.ImageBrush ib = g.Background as ImageBrush;                    
    if (ib.ImageSource == null)
    {
        g.Background = new SolidColorBrush(Colors.MYCOLOR);
    }
}

答案 1 :(得分:1)

如果您的图像不透明,我只需创建不同的网格甚至矩形,使其全屏并使用颜色。如果有可用的图像,那么它将覆盖颜色并完成。