В Window1.xaml У меня есть меню и область отображения:
<Menu x:Name="TheMenu" Width="Auto" Height="25" DockPanel.Dock="Top"/>
<ItemsControl x:Name="MainContent" DockPanel.Dock="Top"/>
В Window1.xaml.cs Я динамически загружаю в пункт меню:
MenuItem menuItemEmployees = new MenuItemEmployees(this);
TheMenu.Items.Add(menuItemEmployees);
В MenuItemEmployees.xaml.cs Я внедряю Window1, но как мне получить доступ к его элементам?
using System.Windows.Controls;
using System.Windows;
namespace TestContainer1
{
public partial class MenuItemEmployees : MenuItem
{
public MenuItemEmployees(Window1 window1)
{
InitializeComponent();
}
private void Create_Employee(object sender, System.Windows.RoutedEventArgs e)
{
TextBlock textBlock = new TextBlock();
textBlock.Text = "New Customer";
//how can I access my ItemsControl element in "Window1" here?
//pseudo code:
Window1.Children["MainContent"].Add(textBlock);
}
}
}
ОТВЕТ:
Хорошо, я понял, это был просто недосмотр, я забыл создать внутреннюю переменную для window1. Но я оставлю этот код здесь, может быть интересно, очень легко передать главное окно в элементы управления, чтобы динамически добавленные элементы управления могли обращаться к другим элементам в окне, что-то вроде инъекции зависимостей бедного человека без интерфейсов: *
using System.Windows.Controls;
using System.Windows;
namespace TestContainer1
{
public partial class MenuItemEmployees : MenuItem
{
private Window1 _window1;
public MenuItemEmployees(Window1 window1)
{
InitializeComponent();
_window1 = window1;
}
private void Create_Employee(object sender, System.Windows.RoutedEventArgs e)
{
TextBlock textBlock = new TextBlock();
textBlock.Text = "New Customer";
_window1.MainContent.Items.Add(textBlock);
}
}
}