Добавьте ListBoxItem в ListBox в UserControl окна из другого UserControl WPF другого окна - PullRequest
1 голос
/ 03 июля 2019

У меня есть 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, который находится в главном окне.Как я могу сделать это, учитывая тот факт, что оба пользовательских элемента управления содержатся в отдельных окнах?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...