我有一个绑定到属性MainImage的XAML代码:
<Grid>
<Grid.Background>
<ImageBrush ImageSource="{Binding MainImage}"/>
</Grid.Background>
</Grid>
MainImage是一个ImageSource属性。但是,现在我想设置简单的网格刷背景。应用程序使用ImageSource,如果有图像,否则app必须设置简单的Brush颜色。如果可能的话,从Brush到ImageSource的转换存在问题。
答案 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)
如果您的图像不透明,我只需创建不同的网格甚至矩形,使其全屏并使用颜色。如果有可用的图像,那么它将覆盖颜色并完成。