在文本框中的不同页面上显示组合框中的值

时间:2018-02-14 20:31:03

标签: wpf

单击按钮时,我试图在不同页面的文本框中显示组合框中的选项。我想使用NavigationService,但我不确定这是不是正确的方式。在这部分代码中,我得到了正确的值,并且我正在使用messagebox进行测试,这是有效的。

private void Button_Click(object sender, RoutedEventArgs e)
    {

        itemSelection = SubItemBox.Text;
        NavigationService.Navigate(
            new Uri("/Display.xaml?Message=" + itemSelection, 
                     UriKind.Relative)
            );

        MessageBox.Show(itemSelection);
    }

我有一个问题想弄清楚接下来要去哪里,我无法弄清楚如何在Display.xaml中显示itemSelection

namespace CateringDisplay
{

public partial class Display : Page
{

    string itemSelection;

    public Display()
    {
        InitializeComponent();
    }

    private void Page_Loaded(object sender, RoutedEventArgs e)
    {


    }
    }
}

我正在努力学习WPF

,我们将不胜感激

1 个答案:

答案 0 :(得分:0)

您可以尝试使用事件聚合器(https://msdn.microsoft.com/en-us/library/ff921122.aspx):

,而不是使用导航

您定义一个事件:

public class SelectionChangedEvent : PubSubEvent<string> { }

您订阅了显示页面中的活动

public partial class Display : Page
{
    string itemSelection;

    public Display()
    {
        InitializeComponent();

        IEventAggregator eventAggregator = Locator.GetInstance<IEventAggregator>();
        eventAggregator.GetEvent<SelectionChangedEvent>().Subscribe(OnSelectionChanged);
    }

    private void OnSelectionChanged(string obj)
    {
        itemSelection = obj;
    }

    private void Page_Loaded(object sender, RoutedEventArgs e)
    {


    }
}

事件处理程序使用事件有效内容更新项目选择。最后,您从按钮单击事件处理程序激活事件:

private void Button_Click(object sender, RoutedEventArgs e)
{
    itemSelection = SubItemBox.Text;

    IEventAggregator eventAggregator = Locator.GetInstance<IEventAggregator>();
    eventAggregator.GetEvent<SelectionChangedEvent>().Publish(itemSelection);

    MessageBox.Show(itemSelection);
}

希望它有所帮助。