【问题标题】:How to contain tab control from buttons如何包含按钮中的选项卡控件
【发布时间】:2014-10-16 07:40:10
【问题描述】:

我有以下代码块(为块道歉)

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

我正在尝试找出一种将信息发送到同一处理程序的方法,该处理程序将控制选项卡的更改。我有什么

    private void TileTabControl(object sender, RoutedEventArgs e,string U)
    {
        MessageBox.Show(U.ToString()); <!-- Test if U is correctly set-->
    }

通过这种方法,我计划通过以下方式更改选定的选项卡:

    private void TileTabControl(object sender, RoutedEventArgs e,string U)
    {
        //MessageBox.Show(U.ToString());
        U.IsSelected = true;
    }

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

我试过了:

Count="1" Margin="0" Click="TileTabControl(MainTab)">

返回:

错误 1 ​​Click="TileTabControl(test)" 无效。 'AddNewShiftTileClick(test)' 不是有效的事件处理程序方法名称。 只有生成类或代码隐藏类的实例方法才有效。

我已经研究了谷歌如何按照这些思路做某事,但我发现的是一些基本问题,这些问题询问关于将选项卡控件从控件更改为自身的问题,这会产生代码 sn-ps的:

TabControl.Tabs[TabNumber].IsSelected=true;

当我尝试修改并包含到我当前的代码集中时,结果没有用。

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

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

【问题讨论】:

    标签: c# wpf tabcontrol


    【解决方案1】:

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

     <Controls:Tile Title="Add Shift" 
        TiltFactor="2"
        Width="100" Height="100" 
        Count="1" Margin="0" Tag="NewShift" Click="TileTabControl">
     </Controls:Tile>
    

    通过添加tag 元素,在sender 对象中提供参数/值并进行验证:

    var Type = (Button)sender;
    MessageBox.Show(Type.Tag.ToString());
    

    这会将 Sender 对象转换为一个按钮,这反过来又允许我获取在 tag 元素内解析的值,然后转换为字符串并在文本框中打印出来。经过数据处理后,大致如下:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-08
      相关资源
      最近更新 更多