WPF - Как повторно использовать обработчик событий кнопки в разных windows - PullRequest
0 голосов
/ 04 апреля 2020

Я разработал приложение WPF, в котором имеется панель стека с четырьмя кнопками, которая действует как навигационная система. Кнопки соответствуют окну. Например, о, обновить, переименовать и выйти. Поэтому, когда мое приложение загружается, AboutWindow открывается. пользователь может выбрать любую кнопку, и приложение покажет это окно и закроет текущее окно.

XAML - AboutWindow.xaml

<StackPanel>
    <Button Name="AboutBtn" Click="AboutBtnNavigate">About</Button>
    <Button Name="UpdateBtn" Click="UpdateBtnNavigate">About</Button>
    <Button Name="RenameBtn" Click="RenameBtnNavigate">About</Button>
    <Button Name="ExitBtn" Click="ExitBtnNavigate">About</Button>
</StackPanel>

C# - AboutWindow.xaml.cs (класс AboutWindow)

private void AboutBtnNavigate(object sender, RoutedEventArgs e)
{
    this.Show()
}

private void UpdateBtnNavigate(object sender, RoutedEventArgs e)
{
    UpdateWindow updateWindow = new UpdateWindow();
    updateWindow.Show();
    this.Close();
}

private void RenameBtnNavigate(object sender, RoutedEventArgs e)
{
    RenameWindow renameWindow = new RenameWindow();
    renameWindow .Show();
    this.Close();
}

private void ExitBtnNavigate(object sender, RoutedEventArgs e)
{
     ExitWindow exitWindow = new ExitWindow ();
     exitWindow .ShowDialog();

}

Так что в настоящее время эти обработчики событий находятся в классе AboutWindow, но мне нужно будет использовать те же методы в другом месте, например, в UpdateWindow классе и RenameWindow классе. Есть ли возможность повторно использовать эти методы без необходимости переписывать код, имея в виду, что код для каждого метода будет немного меняться в зависимости от класса, в котором они находятся. Например. если используется в UpdateWindow, UpdateBtnNavigate будет на самом деле просто Show();.

По сути, я спрашиваю, как лучше всего использовать OOP для ограничения количества повторяющегося кода в этой ситуации. Надеюсь, это имеет смысл. Заранее спасибо!

...