Просто как тот!
я странная проблема с 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 = ..' не нужна.