Моя цель - обработать событие загрузки приложения, при этом применяя паттерн MVVM.
Насколько допустимо обработать его просто запихав обработчик в cs код окна?
Возможно ли обрабатывать такие события с помощью команд? Если да, то как? Все примеры команд которые я просматривал срабатывали лишь при клике.
Есть ли какой-то другой способ обработать события не нарушая "заповедей" MVVM?
Нужно подключить в xaml
xmlns:intr="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
и привязать событие загрузки к своему свойству
<Grid>
<intr:Interaction.Triggers>
<intr:EventTrigger EventName="Loaded">
<intr:InvokeCommandAction Command="{Binding WindowLoaded}"/>
</intr:EventTrigger>
</intr:Interaction.Triggers>
</Grid>
cs
public class TestViewModel
{
public ICommand WindowLoaded { get; set; }
public TestViewModel()
{
WindowLoaded = new RelayCommand(Load);
}
private void Load(object obj)
{
MessageBox.Show("Загрузка");
}
}
RelayCommand
/// <summary>
/// Класс описывающий реализацию интерфейса ICommand, для связываний событий из XML и кодом C#
/// </summary>
public class RelayCommand : ICommand
{
/// <summary>
/// делегат, который будет выполнять действие
/// </summary>
private readonly Action<object> _execute;
/// <summary>
/// делеагат, который будет проверять разрешение на выполнение команды
/// </summary>
private readonly Func<object, bool> _canExecute;
public RelayCommand(Action<object> execute, Func<object, bool> canExecute = null)
{
_execute = execute;
_canExecute = canExecute;
}
/// <summary>
/// можно ли выполнять команду или нет
/// </summary>
/// <param name="parameter">функция, в которой происходит проверка на выполнение</param>
/// <returns>можно или нет выполнить(true или false)</returns>
public bool CanExecute(object parameter)
{
return _canExecute == null || _canExecute(parameter);
}
/// <summary>
/// выполнение команды
/// </summary>
/// <param name="parameter">функция, которая будет выполняться</param>
public void Execute(object parameter)
{
_execute(parameter);
}
/// <summary>
/// добавления и удаления подписчика
/// </summary>
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть приложение написанное на C# Xamarin (Android, IOS)Необходимо показывать изображение которое распологается на сайте
Доброго времени суток Сделал языковой переключатель и вот такую логику от которой подключая языковые пакеты и отображаю на выбранном языке...
Странное поведение команды shell_exec: при выполнении она выполняется 2 раза
Появилась проблема с vk apiМетод messages