Странное поведение пути изображения UserControl в Blend 4 и WPF 4.0 - PullRequest
0 голосов
/ 13 декабря 2010

Я использую Blend 4 и VisualStudio 2010 для создания приложения WPF 4.0 для киоска с функцией, подобной мастеру. Я решил, что хотел бы, чтобы отдельные шаги были перенесены в отдельные элементы UserControls, чтобы главное окно приложения было как можно меньше. Однако у меня возникают проблемы с включением UserControl в главное окно, поскольку пути к изображениям искажаются после перемещения XAML в отдельный файл UserControl.

Этот код работает, когда он помещается в главное окно XAML:

<Button Grid.Row="1" Grid.Column="2" Height="{Binding ActualWidth, RelativeSource={RelativeSource Self}}" Margin="20" VerticalAlignment="Bottom" Style="{DynamicResource ImageButton}">
  <Button.Background>
    <ImageBrush ImageSource="/Images/Extra/motor_boat_2.jpg" Stretch="UniformToFill"/>
  </Button.Background>
</Button>

Но когда я перемещаю этот код в отдельный пользовательский элемент управления и включаю его в главное окно, конструктор выдает и исключение:

IOException: не удается найти ресурс 'images / extra / sailing_boat.jpg'.

Я пытался использовать несколько различных синтаксисов, но все они терпят неудачу, иногда используя каталог %ProgramFiles%, в других случаях преобразовывая абсолютный путь в относительный (как указано выше). Иногда из-за этого не удается выполнить операцию Build Project в Blend 4.

Все изображения помечены как Ресурс , при этом для параметра Действие построения установлено значение Копировать всегда .

VisualStudio не имеет проблем со сборкой и запуском приложения, UserControl корректно отображается в запущенном приложении без исключений.

EDIT:

Использование относительных путей в UserControl, а затем сборка и запуск приложения из VisualStudio и переключение обратно в Blend корректно отображают изображения до следующей модификации UserControl.

1 Ответ

0 голосов
/ 13 декабря 2010

Использовать Pack URI как показано ниже:

Uri uri = new Uri("pack://application:,,,/Images/Extra/motor_boat_2.jpg");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...