Answer the question
In order to leave comments, you need to log in
WPF How can I pass data from the ComboBox of one window to the Label of another window?
There is a window in WPF in which a value is selected in a ComboBox. Is there any way to pass the value of the selected ComboBox to the Label of another window? And if possible, could show the example of CBPat - ComboBox 1 windows and NamePat - Label 2 windows.
Answer the question
In order to leave comments, you need to log in
Hello. I think a simple and reliable way would be to pass the necessary data through the constructor of the second window. By default, it is created without parameters, but we can add them there. I wrote the code and provided it with comments, I think it will be easier to understand.
XAML code of the main window (MainWindow):
<Window x:Class="ComboBoxResultToAnotherWindow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ComboBoxResultToAnotherWindow"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<StackPanel>
<ComboBox Name="cbPat" Margin="100" Height="30"/>
<Button Name="openSecondWindowButton" Width="100" Height="40" Content="Second Window" Click="OpenSecondWindowButton_Click"/>
</StackPanel>
</Window>
<Window x:Class="ComboBoxResultToAnotherWindow.SecondWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ComboBoxResultToAnotherWindow"
mc:Ignorable="d"
Title="SecondWindow" Height="450" Width="800">
<Grid>
<Label Name="labelWindow2"></Label>
</Grid>
</Window>
// Основное окно
public partial class MainWindow : Window
{
// Тестовый список элементов, здесь я взял строки, но вы можете взять другой источник данных
// и другой тип данных. Можете изменить способ их получение, вобщем как сами посчитаете необходимым
List<string> elements = new List<string>() { "first", "second", "third" };
// Конструктор основного окна
public MainWindow()
{
InitializeComponent();
// Привязываем элементы к комбобоксу
cbPat.ItemsSource = elements;
}
// Обработчик события нажатия на кнопку
private void OpenSecondWindowButton_Click(object sender, RoutedEventArgs e)
{
// Создаём объект, представляющий второе окно с лэйблом, на котором будем отображать данные
// В конструктор передаём выбранный в комбобоксе элемент (мы изменили конструктор второго окна,
// соответствующим способом). Данные преобразованы к нужному типу.
SecondWindow secondWindow = new SecondWindow((string)cbPat.SelectedItem);
// Показываем окно
secondWindow.Show();
}
}
// Второе окно
public partial class SecondWindow : Window
{
// Конструктор изменён соответсвенно для приём строки, или другого элемента,
// необходимого вам
public SecondWindow(string element)
{
InitializeComponent();
// Устанавливаем содержимое лейбла элементов, полученным в качестве аргумента
labelWindow2.Content = element;
}
}
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question