Я пытаюсь создать приложение 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