Здравствуйте. Думаю, простым и надёжным способом будет передача нужных данных через конструктор второго окна. Стандартно он создаётся без параметров, но мы можем дописать их туда. Написал код и снабдил его комментариями, думаю так будет проще разобраться.
Код XAML главного окна (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>
Код XAML второго окна (SecondWindow):
<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>
Код C# главного окна (MainWindow):
// Основное окно
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();
}
}
Код C# второго окна (SecondWindow):
// Второе окно
public partial class SecondWindow : Window
{
// Конструктор изменён соответсвенно для приём строки, или другого элемента,
// необходимого вам
public SecondWindow(string element)
{
InitializeComponent();
// Устанавливаем содержимое лейбла элементов, полученным в качестве аргумента
labelWindow2.Content = element;
}
}
У меня всё получилось. Выбрал в комбобоксе нужный элемент, нажал на кнопку, открылось окно, а там на лейбле выбранный элемент.