在选项卡控件中以编程方式切换选项卡

问题描述 投票:0回答:1

我想知道如何在选项卡控件中切换到另一个选项卡。

我有一个主窗口,该窗口具有与之关联的选项卡控件,并且它会定向到不同的页面。我想从另一个标签中触发的事件切换到标签。当我尝试使用TabControl.SelectedIndex时,出现错误“访问非静态,方法或属性'MainWindow.tabControl']需要对象引用”>

这是我的代码,从MainWindow声明TabControl并尝试从其他选项卡切换到它。

<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;
        }
}

我尝试将其切换为私有静态void并收到相同的错误。

我还尝试了以下代码,创建了MainWindow的实例,并且没有错误,但是当我运行代码时,选定的选项卡在屏幕上没有改变。但是,如果我使用MessageBox查看“选定索引”,那么我将看到更改后的标签“索引”。

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;
    }
}

我想知道如何在选项卡控件中切换到其他选项卡。我有一个主窗口,该窗口具有与之关联的选项卡控件,它可定向到不同的页面。我想从...切换到选项卡...

c# wpf tabs tabcontrol
1个回答
0
投票

看来您的主要问题是您无法从ManufacturingOrderEngineeringOptimization UserControls中轻松访问MainWindow及其所有子级。这是正常的。有几种解决方法。一个简单的违反了某些MVVM原理的方法(但是无论如何,您正在这样做,所以我认为您不会介意)是检索MainWindow对象的实例:

© www.soinside.com 2019 - 2024. All rights reserved.