C# 如何从按钮中包含选项卡控件

C# 如何从按钮中包含选项卡控件,c#,wpf,tabcontrol,C#,Wpf,Tabcontrol,我有下面的代码块为这个块道歉 <Canvas HorizontalAlignment="Left" Height="439" VerticalAlignment="Top" Width="1171" Canvas.Left="10" Canvas.Top="10" Margin="0,0,0,-1" > <TabControl Height="419" Canvas.Left="10" Canvas.Top="10" Width="1151"> &

我有下面的代码块为这个块道歉

<Canvas HorizontalAlignment="Left" Height="439" VerticalAlignment="Top" Width="1171" Canvas.Left="10" Canvas.Top="10" Margin="0,0,0,-1" >
    <TabControl Height="419" Canvas.Left="10" Canvas.Top="10" Width="1151">
        <TabItem x:Name="MainTab" Header="Main">
        <Grid>

            <Canvas HorizontalAlignment="Left" Height="100" VerticalAlignment="Top" Width="741" Canvas.Left="55" Canvas.Top="118" Margin="10,91,0,0">
                <Controls:Tile Title="Add Shift" 
                TiltFactor="2"
                Width="100" Height="100" 
                Count="1" Margin="0" Click="TileTabControl">
                </Controls:Tile>

                <Controls:Tile Title="Recorded Shifts" 
                TiltFactor="2"
                Width="136" Height="100" 
                Count="2" Margin="0" Canvas.Left="105">
                </Controls:Tile>

                <Controls:Tile Title="Details Of Pay" 
                TiltFactor="2"
                Width="136" Height="100" 
                Count="3" Margin="0" Canvas.Left="246">
                </Controls:Tile>

                <Controls:Tile Title="Account Settings" 
                TiltFactor="2"
                Width="158" Height="100" 
                Count="4" Margin="0" Canvas.Left="387">
                </Controls:Tile>

                <Controls:Tile Title="View Shifts By Month" 
                TiltFactor="2"
                Width="191" Height="100" 
                Count="5" Margin="0" Canvas.Left="550">
                </Controls:Tile>
            </Canvas>
        </Grid>
        </TabItem>
        <TabItem x:Name="RecordedShifts" Header="Recorded Shifts">
            <Grid Background="#FFE5E5E5"/>
        </TabItem>
        <TabItem x:Name="PayDetails" Header="Pay Details">
            <Grid Background="#FFE5E5E5"/>
        </TabItem>
        <TabItem x:Name="AccountSettings" Header="Account Settings">
        <Grid Background="#FFE5E5E5"/>
            </TabItem>
        <TabItem x:Name="ShiftsByMonth" Header="Shifts By Month">
            <Grid Background="#FFE5E5E5"/>
        </TabItem>
        <TabItem x:Name="NewShift" Header="New Shift ">
            <Grid Background="#FFE5E5E5"/>
        </TabItem>
    </TabControl>

</Canvas>
然后将切换到正确的选项卡。我觉得如果这种方法是可行的,它将最大限度地减少重复的功能空白,这将有一个目的,即切换到不同的选项卡

我试过:

Count="1" Margin="0" Click="TileTabControl(MainTab)">
它返回:

错误1单击=TileTabControltest无效。 “AddNewShiftTileClicktest”不是有效的事件处理程序方法名称。 只有生成的类或代码隐藏类上的实例方法有效

我曾研究过谷歌如何按照这些思路做一些事情,但从中我发现了一些基本问题,这些问题涉及如何将tab控件从它自己的控件更改为tab控件,它会大量生成以下代码片段:

    private void TileTabControl(object sender, RoutedEventArgs e,string U)
    {
        //MessageBox.Show(U.ToString());
        U.IsSelected = true;
    }
TabControl.Tabs[TabNumber].IsSelected=true;
当试图修改并包含到我的当前代码集时,结果是无效的

有一种基本方法,即为每个Tile单击切换选项卡创建一个新的事件处理程序,但我觉得这会给后端C编码带来混乱


是否有任何不同的方法或方案可以实现,以最小化重复的事件处理程序以执行单一目的?

似乎我已经找到了解决方法,在进一步添加选项卡控件之前,我做了以下更改:

 <Controls:Tile Title="Add Shift" 
    TiltFactor="2"
    Width="100" Height="100" 
    Count="1" Margin="0" Tag="NewShift" Click="TileTabControl">
 </Controls:Tile>
它将Sender对象强制转换为一个按钮,该按钮允许我在tag元素中解析值,并在文本框中转换为string&打印输出。经过数据处理后,大致如下所示:

    private void TileTabControl(object sender, RoutedEventArgs e)
    {
        var Tab = (Button)sender;
        //MessageBox.Show(Type.Tag.ToString());
        switch (Tab.Tag.ToString())
        {
            case "NewShift":
                break;
            case "RecordedShifts":
                break;
            case "DetailsOfPay":
                break;
            case "AccountSettings":
                break;
            case "ShiftsByMonth":
                break;
        }
    }
var Type = (Button)sender;
MessageBox.Show(Type.Tag.ToString());
    private void TileTabControl(object sender, RoutedEventArgs e)
    {
        var Tab = (Button)sender;
        //MessageBox.Show(Type.Tag.ToString());
        switch (Tab.Tag.ToString())
        {
            case "NewShift":
                break;
            case "RecordedShifts":
                break;
            case "DetailsOfPay":
                break;
            case "AccountSettings":
                break;
            case "ShiftsByMonth":
                break;
        }
    }