Есть некоторые объяснения аналогичной проблемы, но я все еще не понимаю, что я сделал не так. У меня есть изображение в C:/Image.png
.
Теперь я запустил WPF-проект в MVVM-Pattern, где у меня есть пользовательский контроль для изображения:
<Grid>
<Grid.DataContext>
<vm:LSImageVM/>
</Grid.DataContext>
<Image x:Name="Picture" Source="{Binding LSImage, NotifyOnSourceUpdated=True}"/>
</Grid>
Это Viewmodel- Класс для изображения:
public class LSImageVM : ViewModelBase
{
private ImageSource _image;
private LockscreenSettingsClass settings;
public LSImageVM()
{
var json = File.ReadAllText("C:/Program Files/LSL/settings.json");
settings = JsonConvert.DeserializeObject<LockscreenSettingsClass>(json);
Uri imageUri = new Uri(settings.Path, UriKind.Relative);
BitmapImage imageBitmap = new BitmapImage(imageUri);
LSImage = imageBitmap;
}
public ImageSource LSImage
{
get => _image;
set
{
_image = value;
OnPropertyChanged();
}
}
}
Итак, я получаю свои настройки от Json, который выглядит так:
{
"Path": "C:/Image.png",
"Interval": 5000,
"LogPath": "C:/Lockscreen.log"
}
Затем путь описан в настройках (C:/Image.png
в данном случае) преобразуется в BitmapImage, который я использую в качестве ImageSource, который я связал в xaml выше.
В этот момент, когда я строю проект, я могу видеть изображение в своем xaml- редактор:
Теперь я добавляю Usercontrol в свое главное окно:
<Window x:Class="LockscreenSettings_MVVM.View.Windows.Main_Window"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:uc="clr-namespace:LockscreenSettings.View.UserControls"
xmlns:local="clr-namespace:LockscreenSettings_MVVM.View.Windows"
mc:Ignorable="d"
Title="Main_Window" Height="500" Width="400" ResizeMode="NoResize">
<Grid>
<uc:LSImageUC/>
</Grid>
</Window>
И это та точка, где я не вижу изображение при запуске программы.
Что я пропустил?