网格背景的多个属性,如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存在问题。
我会使用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);
}
}
如果你的图像不是透明的,我会简单地创建不同的网格甚至矩形,使其全屏和彩色。如果有可用的图像,那么它将只是覆盖颜色和完成。