繁体   English   中英

WPF-将TextBox Text设置为下拉菜单的值

[英]WPF - Set TextBox Text to value of dropdown menu

我想将文本框的文本设置为wpf中另一个窗口的下拉菜单的值。

我在网上搜索了一个解决方案,但问题似乎太具体了,我不知道如何制定适当的搜索条件。

我在MainWindow.xaml中有以下代码:

<ComboBox x:Name="SelectServerDropdown" SelectedIndex="0" Margin="95,289,481.333,106.667" Padding ="2, 2, 2, 2" Height="Auto">
<ComboBoxItem>Server 1</ComboBoxItem>
<ComboBoxItem>Server 2</ComboBoxItem>

要获取选定的项目和值,在MainWindow.xaml.cs中,我具有:

ComboBoxItem selectServerDropdownItem = (ComboBoxItem)SelectServerDropdown.SelectedItem;
string ServerName = selectServerDropdownItem.Content.ToString();

我通过单击MainWindow.xaml中的“选项”按钮来启动OptionsWindow.xaml。 我应该在OptionsWindow.xaml中放入什么:

<TextBlock Text="Servername" FontWeight="Bold"/>
<TextBox x:Name="ServernameField" Padding="2px" Text=???/>

或如何检索值以将其传递给OptionsWindow.xaml中的“文本”?

现在该看看MVVM模式了

您应该具有一个视图模型类,该类具有的属性应将视图用作数据绑定的源。 两个窗口将在其DataContext中共享视图模型的实例。

最简单的视图模型:

public class ViewModel
{
    public IEnumerable<string> ServerNames { get; }
        = new string[] { "Server 1", "Server 2" };

    public string SelectedServerName { get; set; }
        = "Server 1";
}

public partial class MainWindow : Window
{
    private readonly ViewModel viewModel = new ViewModel();

    public MainWindow()
    {
        DataContext = viewModel;
        InitializeComponent();
    }
}

它会像ComboBox一样使用

<ComboBox ItemsSource="{Binding ServerNames}"
          SelectedItem="{Binding SelectedServerName}"/>

OptionsWindow将使用

<TextBox Text="{Binding SelectedServerName}"/>

其DataContext将在MainWindow中创建时设置:

var options = new OptionsWindow { DataContext = viewModel };
options.Show();

如果在后面的代码中更改视图模型的SelectedServerName属性时需要更新MainWindow中的ComboBox,则视图模型类将需要实现INotifyPropertyChanged接口并从属性设置器中触发PropertyChanged事件。

您可以从主窗口访问值,如下所示:

((MainWindow)Application.Current.MainWindow)

您只需调用MainWindow的现有实例并将其强制转换即可访问其成员。

之后,您只需使用后面的代码来填写您在MainWindow中填充的ServerName中的值:

ServernameField.Text = ((MainWindow)Application.Current.MainWindow).ServerName;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM