Создает ли ContentControl ссылку на компонент вместо экземпляра?C#

Место общения программистов C#
Ответить
Anonymous
 Создает ли ContentControl ссылку на компонент вместо экземпляра?

Сообщение Anonymous »

Я пытаюсь создать приложение WPF, у меня есть пустое окно, в котором есть только рамка для переключения между страницами, у меня есть заголовок TabControl, который должен быть одинаковым на всех страницах, логический подход состоит в том, чтобы поместить TabControl внутри окна, но когда я это сделал, это на самом деле не работает, хотя я пытался разместить во втором ряду сетки окна, а в первом ряду, конечно, есть TabControl, в любом случае подход, которому я следовал, заключался в добавлении компонента TabControl к каждому страница, но когда я добавил логику в С# позади, чтобы изменить источник кадра в окне, я добавил ее только на домашнюю страницу, она работала нормально, но странно то, что она работает и на всех других страницах. Я пробовал проверить, сохраняется ли один и тот же Home TabControl на других страницах, но это не так. Например, когда я удаляю его со страницы клиента, он не отображается после перехода на страницу клиента, что предполагает, что все ContentControl, добавляющие TabControl на страницы, просто ссылаются на компонент TabControl в app.xaml, а не создают его экземпляры внутри каждой страницы.
вот код C# позади дома страница

Код: Выделить всё

public partial class Home : Page
{

public Home()
{
InitializeComponent();
((TabControl)header.Content).SelectionChanged += TabListener.OnTabSelectionChanged;
}
}
а вот код C# MainWindow

Код: Выделить всё

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

public void Navigation(string tab)
{
frame.Source = new Uri($"{tab}.xaml", UriKind.Relative);

}

}
также код класса TabListener, который фактически выполняет всю работу (вызывается из инициализатора домашней страницы)

Код: Выделить всё

public static class TabListener
{
public static void OnTabSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (sender is TabControl tabControl)
{
//var selectedTab = tabControl.SelectedItem;
if (tabControl.SelectedItem is TabItem tabItem)
{
string pageName = tabItem.Header.ToString();
if (pageName != null)
{
if (Application.Current.MainWindow is MainWindow mainWindow)
{
mainWindow.Navigation(pageName);
}
}
}
}
}
}
Так я прав? ContentControl просто относится к одному и тому же компоненту? Любая информация о том, как это работает, поможет. Спасибо

Подробнее здесь: https://stackoverflow.com/questions/797 ... n-instance
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»