У меня есть следующий код чанка (Извинения для блока)Как содержать вкладки из кнопок
<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 Нажмите = "TileTabControl (тест)" не является действительным. 'AddNewShiftTileClick (test)' не является допустимым именем метода обработчика события. Действительны только методы экземпляров в сгенерированном или закодированном классе.
Я исследовал в Google о том, как сделать что-то вдоль этих линий, но от того, что я обнаружил это основные вопросы, которые задают о смене вкладок из-под контроля это сам, который производит в большом количестве фрагменты кода вдоль линии:
TabControl.Tabs[TabNumber].IsSelected=true;
Который при попытке изменить и включить в мой текущий набор кодов оказался безрезультатным.
Существует базовый подход, который заключается в создании нового обработчика событий для каждого щелчка, чтобы переключать вкладки, но я чувствую, что это вызовет грязный взгляд на кодирование на языке C#.
Есть ли какой-либо другой подход или схема, с помощью которой я мог бы попытаться минимизировать дублирование обработчиков событий для выполнения одной цели?