【发布时间】: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