Как показать относительное исходное изображение на 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 после инициализации изображения. Что-нибудь мне нужно знать другой вариант?

0 ответов

Другие вопросы по тегам