Реализация настроек для элементов MenuItem
У меня есть Menu, в котором есть MenuItem "Входящие", "Исходящие". Проблема состоит в том, что этих MenuItem может появиться неизвестно сколько, а делать для каждого элемента отдельное окно настроек - как мне кажется неразумно (все настройки идентичны, но при этом работают независимо друг от друга. Каждая настройка отдельного элемента будет записываться в БД)
Как мне реализовать одно окно, которое будет отвечать за настройки выбранного компонента? Я передаю ISettings в конструктор окна, однако я не знаю как мне определить к какому типу его привести.
Так же, я могу просто захардкодить x:UID каждому элементу меню и передавать его как CommandParametr, но мне кажется это не самой удачной реализацией.
Я сделал такой класс модели:
public class IncomingSettings : ISettings
{
public string Path { get; set; }
public double Delay { get; set; }
public bool CanExecute { get; set; }
}
А так же класс ViewModel
class SettingsViewModel : BaseViewModel
{
private double _delay;
private string _path;
private bool _canExecute;
public double Delay { get => _delay; set => SetProperty(ref _delay, value); }
public string Path { get => _path; set => SetProperty(ref _path, value); }
public bool CanExecute { get => _canExecute; set => SetProperty(ref _canExecute,value); }
public Command OpenSettingsWindowCommand
{
get
{
return new Command((settings) =>
{
var setting = (ISettings)settings;
SettingsWindow window = new SettingsWindow(setting);
if(window.ShowDialog() == true)
{
}
});
}
}
}