WPF从图像资源分配边框背景

时间:2015-05-04 20:02:25

标签: wpf

我试图模拟网格库存系统。我有一些行和列的网格。我有一个图像资源。我得到的错误是:

无法隐式转换类型System.Windows.Controls.Image'到' System.Windows.Media.Brush'

如果我将我的Image强制转换为ImageBrush,那么项目会编译,但exe会立即崩溃。

<Grid x:Name="MasterGrid" Margin="0">
    <Grid.Resources>
        <Image x:Key="notepad" Source="notepad_16x16.jpg" />
    </Grid.Resources>

// create a border and set it's background image
Border border = new Border();
border.Visibility = System.Windows.Visibility.Visible;
var img = (Image)MasterGrid.FindResource("notepad");
border.Background = img;

// add the border to the grid
Grid.SetRow(border, 0);
Grid.SetColumn(border, 1);
Grid.SetRowSpan(border, 1);
Grid.SetColumnSpan(border, 1);
InvGrid.Children.Add(border);

2 个答案:

答案 0 :(得分:1)

border.Background期待一个画笔,你用图像填充它。您需要从Image资源

创建ImageBrush
border.Background = new ImageBrush((BitmapImage)FindResource("notepad"));

您的图片资源应定义如下:

<Grid.Resources>
    <BitmapImage x:Key="notepad" UriSource="images/notepad_16x16.jpg" />
</Grid.Resources>

答案 1 :(得分:0)

    <Grid.Background>
        <ImageBrush ImageSource="C:\... your path to the image\notepad_16x16.jpg"/>
    </Grid.Background>

这对我来说没有设置边框。