如何在点击按钮时将ComboBox选中项显示在另一页面的TextBox中
嘿,你的思路完全没问题——NavigationService确实是WPF中页面间导航传值的靠谱方案,我来一步步帮你实现需求!
方法一:通过导航参数(QueryString)传递
这是最常用的方式,适合传递简单类型的值(比如字符串、数字):
源页面(比如MainPage.xaml.cs)的按钮点击事件
先获取你已经确认过的itemSelection,然后在导航时把它作为参数附加到Uri上:private void NavigateButton_Click(object sender, RoutedEventArgs e) { // 你已经验证过这个值是正确的 string itemSelection = yourComboBox.SelectedItem.ToString(); // 导航到Display页面并带上参数 NavigationService.Navigate(new Uri("/Display.xaml?selectedItem=" + itemSelection, UriKind.Relative)); }Display.xaml.cs接收参数并赋值
重写OnNavigatedTo方法,从NavigationContext里取出参数,再赋值给TextBox:protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); // 尝试获取传递过来的参数 if (NavigationContext.QueryString.TryGetValue("selectedItem", out string selectedValue)) { // 把值显示到TextBox里 resultTextBox.Text = selectedValue; } }
方法二:直接给目标页面的公共属性赋值
如果你的值是复杂对象,或者觉得QueryString不够直观,可以用这种更灵活的方式:
在Display.xaml.cs里定义公共属性
public string SelectedItemValue { get; set; }源页面导航前先给属性赋值
private void NavigateButton_Click(object sender, RoutedEventArgs e) { string itemSelection = yourComboBox.SelectedItem.ToString(); // 实例化Display页面,直接设置属性 DisplayPage displayPage = new DisplayPage(); displayPage.SelectedItemValue = itemSelection; // 导航到该页面 NavigationService.Navigate(displayPage); }Display页面在导航完成后赋值
同样在OnNavigatedTo里把属性值放到TextBox:protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); resultTextBox.Text = SelectedItemValue; }
小提示
- 确保你的页面是在
Frame控件里导航的,只有这样NavigationService才会生效; - 如果
SelectedItem不是字符串类型,记得先转换成合适的格式(比如用Convert.ToString()或者对象的特定属性); - 可以在Display页面里加个空值判断,避免参数为空时TextBox显示异常。
内容的提问来源于stack exchange,提问作者HippyDippy
相关产品推荐
相关产品推荐

