У меня есть вопрос. Как динамически привязать переменные из ViewModel в View? На данный момент это даже не отображается. Если я не использую Command, он прекрасно работает (но, конечно, я могу связать изображение только один раз).
Мой Просмотр :
namespace somestuff.View
{
public partial class WindowView : Window
{
public WindowView()
{
this.DataContext = new WindowViewModel();
InitializeComponent();
}
}
}
my View.Xaml (сокращено):
<Image Source="{Binding DisplayedImage}"/>
<Button Command="{Binding NewImageCommand}"/>
И мой ViewModel:
public WindowViewModel()
{
_canExecute = true;
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public string DisplayedImage //displaying image
{
get { return filepath; }
set { filepath = value; NotifyPropertyChanged(nameof(filepath)); }
}
public string filepath { get; set; } //var for binding
private bool _canExecute;
private ICommand _newImageCommand; //command for button
public ICommand NewImageCommand
{
get
{
return _newImageCommand ?? (_newImageCommand = new Commands.CommandHandler(() => GetImage(), _canExecute));
}
}
public void GetImage() { filepath = Pictures.GetNewImage(); } //command on button click
Подскажите, почему после запуска команды GetImage()
при нажатии кнопки изображение, связанное с Image
, не изменилось? Если я перейду filepath = Pictures.GetNewImage();
из команды (более ясно, я не использую команду), все прекрасно работает, но я не могу повторно вызвать привязку к моему изображению. Можете ли вы сказать мне, как динамически привязывать свойства в модель View from View? Когда значение переменной (в данном случае, filepath) изменяется, я хочу изменить и элемент управления View.
Спасибо за любые советы.
EDIT:
У меня есть 6 Image
ярлыков. Я отображаю изображения в нем так:
public BitmapImage DisplayedHighPerformanceImage
{
get { return kMMHP; }
set { kMMHP = value; NotifyPropertyChanged(nameof(kMMHP)); }
}
Так что мне нужно filepath
для инициализации 6 различных растровых изображений. Затем я работаю с этими растровыми изображениями (например, это kMMHP
). Поэтому я хочу отобразить каждое новое растровое изображение, инициализированное из kMMHP
изображения.
kMMHP = method1(); //displaying it
//other stuff do with diffrent bmps
kMMHP = method2(); //displaying it after second method with changed values