Просто как тот!

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

Создайте новый проект WPF и вставьте код следующим образом:

XAML:

<Window x:Class="wpfBug.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300" Loaded="Window_Loaded">
    <StackPanel Name="sp">
    </StackPanel>
</Window>

xaml.cs, вставьте ниже значений по умолчанию:

namespace wpfBug
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Image i = new Image();
            BitmapImage src = new BitmapImage();
            src.BeginInit();
            src.UriSource = new Uri("picture.jpg", UriKind.Relative);
            src.EndInit();
            i.Source = src;
            i.Stretch = Stretch.Uniform;
            //int q = src.PixelHeight;        // Image loads here
            sp.Children.Add(i);
        }
    }
}

Скопируйте изображение в папку bin / Debug и назовите его «picture.jpg»

Эта программа ничего не отображает, если закомментированная строка не закомментирована.

Может кто-нибудь объяснить, что я делаю не так, или почему это происходит? Если вы удалите изображение и запустите программу, она сгенерирует исключение в строке 'int q = ...'. Если эта строка закомментирована, программа запускается без исключений, даже если изображение отсутствует. Загрузка изображения только в том случае, если это имеет смысл, но тогда изображение должно быть загружено, когда я добавляю элемент управления Image в StackPanel.

Любые иды?

Редактировать: Кстати, если вы добавляете изображение как ресурс, строка 'int q = ..' не нужна.

Ответы на вопрос(5)

Ваш ответ на вопрос