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

本文关键字:ImageSource Brush 属性 背景 网格 | 更新日期: 2023-09-27 18:18:03

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

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

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

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

我会使用OnLoaded事件并检查null并以这种方式更改它。除非你想创建一个图像然后给它涂上某种颜色然后作为图像源返回。我不认为有任何退路,除非你自己滚。


<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);
    }
}

如果你的图像不是透明的,我会简单地创建不同的网格甚至矩形,使其全屏和彩色。如果有可用的图像,那么它将只是覆盖颜色和完成。