Создает ли 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 просто относится к одному и тому же компоненту? Любая информация о том, как это работает, поможет. Спасибо
РЕДАКТИРОВАТЬ:
Вот коды xaml для домашней страницы и главного окна, они должны все прояснить

xmlns="http://schemas.microsoft.com/winfx/2006 ... esentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/marku ... ility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
Title="Home">
















Scotland's Charity










Find your next job with few steps, we help you get up again and rebuild your lifeFind more about us by visiting our website





а вот код xaml для MainWindow:






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

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

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

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

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

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