首页 > 解决方案 > 在 UserControls 之间共享数据的最佳实践

问题描述

TLDR:

基本上,我希望能够知道 CheckBox 何时在嵌入式 UserControl 中被选中。

问题:

我有一个用于我的应用程序设置的 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;
    }
}

问题是,如果您单击另一个部分,它不会记住上一部分的设置,我需要包含 UserControls 部分的主 UserControl 来了解已输入的数据。

创建这样的东西的最佳实践是什么?如何让设置 UserControl 与 UserControls 部分通信?

例如,如果用户在 Network 部分输入 IP 地址,我需要 Settings UserControl 能够知道该信息以保存它并在用户返回该部分时再次显示它。

谢谢!

标签: c#wpf

解决方案


推荐阅读