Prakash1206 Ответов: 1

Изображение не меняется в WPF control


я говорил этот, написал почти тот же код, но на другом языке, он работает не так, как ожидалось!
я использую winform(C++/Cli) в качестве хоста и 'WPF User Control Libaray'(C#) в качестве дочернего элемента управления.
интегрированный пользовательский элемент управления WPF(PictureBox) в winforms с использованием компонента ElementHost в Winform.
В принципе, я хотел изменить картинку в элементе управления WPF с помощью кнопки winform. Он компилируется и работает нормально.
Но единственная проблема заключается в том, что изображение не меняется, даже если путь для изображения правильный.

ниже приведен код в событии WinForm button_click
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    OpenFileDialog ^ofd = gcnew OpenFileDialog();
    WpfControlLibrary1::UserControl1 ^uc = gcnew UserControl1();
    if (ofd->ShowDialog() == Windows::Forms::DialogResult::OK)      
    uc->open(ofd->FileName);        
}

Ниже приведен код в UserControl1. xaml.cs
public void open(string path)
{
    MessageBox.Show(path); //path seems to be fine
    img.Source = new BitmapImage(new Uri(path));
}

Ниже приведен код в UserControl1. xaml
<UserControl x:Class="WpfControlLibrary1.UserControl1"

             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="300" d:DesignWidth="300">
    <Grid Margin="-54,0,0,0">
        <Image x:Name="img"  Stretch="Uniform" Opacity="1" Source="Koala.jpg"/>
    </Grid>
</UserControl>


Что я уже пробовал:

попробовал удалить исходное изображение в коде xaml, но это не дало никакого эффекта

1 Ответов

Рейтинг:
12

KarstenK

Загрузка изображения не так уж и коротка. Взгляните на это документация или другие пример кода.


Prakash1206

Спасибо за ваш ответ и полезные ссылки. на этот вопрос был дан ответ здесь
мы не должны создавать новый экземпляр WpfControl