Лучшая практика для обмена данными между UserControls - PullRequest
0 голосов
/ 09 ноября 2018

TLDR:

По сути, я хочу знать, когда CheckBox проверяется во встроенном UserControl.

Вопрос:

У меня есть UserControl для настроек моего приложения. В настройках UserControl есть разделы («Настройки оборудования», «Настройки сети» и т. Д.), Которые являются собственными отдельными пользовательскими элементами управления.

В настройках UserControl есть ListBox с каждым разделом и Grid для отображения UserControl каждого раздела при нажатии:

<ListBox x:Name="SettingsListBox" SelectionChanged="SettingsListBox_SelectionChanged">
    <ListBoxItem>Hardware</ListBoxItem>
    <ListBoxItem>Network</ListBoxItem
</ListBox>

<Grid x:Name="SettingsSectionGrid" />

Я назначаю каждый раздел следующим образом:

private void SettingsListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) {
    // Clear the grid
    SettingsSectionGrid.Children.Clear();

    switch (SettingsListBox.SelectedIndex) {
        // Hardware
        case 0:
            SettingsSectionGrid.Children.Add(new HardwareSection());
            break;
        // Network
        case 0:
            SettingsSectionGrid.Children.Add(new NetworkSection());
            break;
        // Hardware by default
        default:
            SettingsSectionGrid.Children.Add(new HardwareSection());
            break;
    }
}

Проблема в том, что если вы щелкнете по другому разделу, он не запомнит настройки из предыдущего раздела, и мне нужен основной UserControl, в котором находится раздел UserControls, чтобы знать введенные данные.

Как лучше всего создать что-то подобное и как мне настроить параметры, которые UserControl связывает с разделом UserControls?

Например, если пользователь вводит IP-адрес в разделе «Сеть», мне нужно, чтобы в настройках UserControl этой информации была возможность узнать эту информацию, чтобы сохранить ее и представить снова, если пользователь вернется в этот раздел.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...