У меня есть UserControl
с именем UserControl1
, который содержит ListBox
:
<UserControl x:Class="myClass.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="400" d:DesignWidth="400">
<Grid>
<StackPanel Width="400">
<ListBox x:Name="lstBox_UserControl1"/>
</StackPanel>
</Grid>
</UserControl>
UserControl1
находится в моем Window
с именем MainWindow
:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars" x:Class="myClass.MainWindow">
xmlns:uc="clr-namespace:myClass"
<Grid>
<StackPanel>
<UserControl x:Name="usrControl_TelegramQueue" Content="{Binding CurrentView}"/>
</StackPanel>
</Grid>
</Window>
У меня есть простая модель представления, чтобы связать UserControl1
с UserControl
в MainWindow
:
partial class UserControl1ViewModel : ViewModelBase {
private object _currentView;
UserControl1 UserControl1View= new UserControl1();
public TelegramQueueViewModel() {
CurrentView = UserControl1View;
}
public object CurrentView {
get { return _currentView; }
set {
_currentView = value;
OnPropertyChanged("CurrentView");
}
}
}
Класс ViewModelBase
просто обрабатывает событие измененного свойства:
class ViewModelBase : INotifyPropertyChanged {
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName) {
var handler = PropertyChanged;
if (handler != null) {
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
Теперь у меня есть еще один Window
с именем SecondWindow
, в котором также есть UserControl
(называемый UserControl2
), аналогично тому, как MainWindow
имеет UserControl1
.MainWindow
открывает SecondWindow
, а UserControl2
содержит TextBox
и Button
.Когда выбрана кнопка UserControl2
, я бы хотел, чтобы содержимое ее текстового поля было добавлено как ListBoxItem
внутри ListBox
, который находится в главном окне.Как я могу сделать это, учитывая тот факт, что оба пользовательских элемента управления содержатся в отдельных окнах?