Мне интересно, как переключиться на другую вкладку в элементе управления вкладками.
У меня есть главное окно, с которым связан элемент управления вкладками, и оно направляет на разные страницы.Я хочу переключиться на вкладку из события, вызванного в другой вкладке.Когда я пытаюсь использовать TabControl.SelectedIndex, я получаю сообщение об ошибке «Требуется ссылка на объект для доступа к нестатическому методу или свойству 'MainWindow.tabControl'
Вот мой код, объявляющий TabControl из MainWindow и пытающийсячтобы переключиться на него из другой вкладки.
<TabControl Name="tabControl" Margin="0,117,0,0" SelectionChanged="tabControl_SelectionChanged" Background="{x:Null}" BorderBrush="Black">
<TabItem x:Name="tabMO" Header="MO" IsTabStop="False">
<Viewbox x:Name="viewMO" Margin="0,0,0,0" Stretch="Fill" StretchDirection="Both">
<local:ManufacturingOrder x:Name="mo" Height="644" Width="1322"/>
</Viewbox>
</TabItem>
<TabItem x:Name="tabOptimize" Header="Optimize" IsTabStop="False">
<Viewbox x:Name="viewOptimize" Margin="0,0,0,0" Stretch="Fill" StretchDirection="Both">
<local:EngineeringOptimization x:Name="Optimize" Height="644" Width="1600"/>
</Viewbox>
</TabItem>
</TabControl>
private void dataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var cellInfo = dataGrid.SelectedCells[0];
var content = (cellInfo.Column.GetCellContent(cellInfo.Item) as TextBlock).Text;
var r = new Regex("[M][0-9]{6}");
if (r.IsMatch(content.ToString()))
{
MainWindow.tabControl.SelectedIndex = 4;
}
}
Я попытался переключить это на частный статический вакуум и получил ту же ошибку.
Я также попробовал следующий код, создаваяэкземпляр MainWindow, и ошибок нет, но когда я запускаю код, выбранная вкладка не меняется на экране. Но если я использую MessageBox для просмотра выбранного индекса, то я вижу свою измененную вкладку Index.
private void dataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var cellInfo = dataGrid.SelectedCells[0];
var content = (cellInfo.Column.GetCellContent(cellInfo.Item) as TextBlock).Text;
var r = new Regex("[M][0-9]{6}");
if (r.IsMatch(content.ToString()))
{
MainWindow frm = new MainWindow();
frm.tabControl.SelectedIndex = 4;
}
}
Любое понимание приветствуется.