Реализация настроек для элементов 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)
                    {

                    }
                });
            }
        }
    }

Ответы (0 шт):