Это полезно для социального взаимодействия.
while (Date != "January 1st"):
time.sleep(1)
else:
print("Happy new year!")
Вы создаете два экземпляра вашего класса MainWindowsViewModel: один в XAML с помощью
<Window.DataContext>
<VM:MainWindowsViewModel />
</Window.DataContext>
и один в коде позади
MainWindowsViewModel _view = new MainWindowsViewModel();
. Таким образом, ваш код заставляет свойство на другом экземпляре модели представлений, чем тот, к которому привязан вид.
Измените свой код следующим образом:
var viewModel = (MainWindowsViewModel)DataContext;
viewModel.StatusImage = new BitmapImage(...);
Я не обнаружил никаких проблем с вашим кодом, но вы можете проверить несколько вещей.
var yourImage = new BitmapImage(new Uri(String.Format("Sources/{0}.png", "red"), UriKind.Relative));
yourImage.Freeze();
_view.StatusImage = yourImage;
. Кроме того, это более простой способ привязки изображения в WPF. Вы можете использовать строку в качестве источника и задать путь ресурса к привязанному свойству:
public string StatusImage
{
get { return "/AssemblyName;component/Sources/red.png"; }
}
Application.Current.MainWindow.DataContext
, но лучше было бы не создавать экземпляр модели представления в XAML и вместо этого создавать глобально доступный экземпляр в вашем коде, то есть в классе App. – Clemens 5 January 2016 в 18:30