2015-05-04 2 views
-1

Я пытаюсь смоделировать систему инвентаризации сетки. У меня есть эта сетка с несколькими строками и столбцами. У меня есть ресурс, который является образом. Ошибка я получаю:WPF назначает границу фона из ресурса изображения

Не может неявно преобразовать тип «System.Windows.Controls.Image» до «System.Windows.Media.Brush»

Если я изменить изображение, чтобы бросить 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); 

ответ

1

The border.Background ожидает кисть, и вы заполняете ее изображением. Вы должны создать ImageBrush из ресурса изображения должны быть определены

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

Ваши графические ресурсы следующим образом:

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

Мне нужно сделать это в коде. Это все динамичный материал. – user441521

+0

См. Обновленный ответ. –

+0

Это сработало. В чем разница между используемым мной изображением и используемым BitmapImage? Кроме того, я заметил, что в моем коде RowSpan должен быть 2. Если это 1, граница вообще не появляется. Если он равен 2, он отображается нормально в 1 ячейке. Я бы подумал, что если RowSpan равно 2, это займет 2 строки, но это не так. Почему это так? – user441521

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

это работает для меня без установления границ.

+0

Это как инвентаре сетки, где каждая «ячейка» может иметь свой собственный образ, который представляет собой предмет (например, зелье здоровья или что-то в этом роде). – user441521

Смежные вопросы