Как показать относительное исходное изображение на WPF, размещенном в WinForm Project, без изменения кода?
Я сделал проект WinForm и добавил ElementHost для использования эффекта смешивания WPF на некоторых изображениях.
ElementHost m_host = new ElementHost();
WPF_TK4S wpfTK4S = new WPF_TK4S();
m_host.Child = wpfTK4S;
m_host.Size = new Size(1000, 1000);
m_host.Location = new Point(0, 0);
this.Controls.Add(m_host);
Я добавил элемент управления изображением в пользовательский элемент управления WPF, как показано ниже.
<UserControl x:Class="Test.WPF_TK4S"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="1000" d:DesignWidth="1000">
<Grid>
<Grid.Background>
<ImageBrush/>
</Grid.Background>
<Image Source="/Resources/TK4S_254X253.png" HorizontalAlignment="Left" Height="344" Margin="48,44,0,0" VerticalAlignment="Top" Width="342" Stretch="None"/>
</Grid>
Изображение хорошо отображается на контрольном представлении, но теперь отображается при запуске приложения. К счастью, после того, как я изменил исходный URI в абсолютный URI, как
"D://Visual Project/Test/Test/Resources/TK4S_254X253.png"
изображение показано хорошо! Я пытался использовать все виды относительных URI, как
".../Test/Resources/TK4S_254X253.png", "pack://application:,,,/TK4S_254X253.png"
но это не работа. Мне нужно использовать относительный путь, потому что проект работает на сервере, поэтому пути каждого проекта разные. И я должен использовать эти вещи на xaml, потому что я должен использовать blend после инициализации изображения. Что-нибудь мне нужно знать другой вариант?