2009-07-02 13 views
10

TabItem başlığında birkaç düğmenin bulunduğu bir WPF TabControl var. Seçili sekmenin başlık tıklatıldığında değiştirilmesini istiyorum.Seçili sekmeyi değiştirme Düğme içindeki Düğmeli WPF TabControl'ü tıklatın

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Grid> 
     <TabControl> 
     <TabItem Content="Item 1 Content"> 
      <TabItem.Header> 
       <StackPanel Orientation="Vertical"> 
        <TextBlock FontSize="14" FontWeight="Bold" Text="Item1"/> 
        <StackPanel Orientation="Horizontal"> 
        <Button Content="Action 1"/> 
        <Button Content="Action 2"/> 
        </StackPanel> 
       </StackPanel> 
      </TabItem.Header> 
     </TabItem> 
     <TabItem Content="Item 2 Content"> 
      <TabItem.Header> 
       <StackPanel Orientation="Vertical"> 
        <TextBlock FontSize="14" FontWeight="Bold" Text="Item2"/> 
        <StackPanel Orientation="Horizontal"> 
        <Button Content="Action 1"/> 
        <Button Content="Action 2"/> 
        </StackPanel> 
       </StackPanel> 
      </TabItem.Header> 
     </TabItem> 
     </TabControl> 
    </Grid> 
</Page> 

Bu örnek göstermek Tab s birkaç: Burada bir kod parçacığı olduğunu. Başlık arka planı tıklandığında bir sekme seçilir, ancak bir tuşa tıklandığında sekme seçilmez. Düğmenin tıklamayı kabul etmesini istiyorum, ancak düğmenin karşılık gelen sekmesini de seçmek istiyorum. Biri yardım edebilir mi?

sayesinde Hitesh

cevap

10

Biz Event Routing kullanarak bunu yapabilirsiniz. RoutedEvents, Click gibi bir şey olayı işleyene kadar element ağacını yukarı taşıyacak. Bu nedenle, zaten sekme öğelerinde Tıklama etkinliğini zaten alıyorsunuz, henüz bir şey yapmıyoruz. Her sekmede o ayarlamak zorunda kalacaktı Ancak

<TabItem Content="Item 1 Content" ButtonBase.Click="TabItem_Click"> 

, bunun yerine biz TabItems için bir stil oluşturabilirsiniz: Böyle sekme öğeler üzerinde Düğme tıklayın işlemek için bir etkinlik yaratabilir TabControl şöyle:

<TabControl> 
    <TabControl.ItemContainerStyle> 
     <Style TargetType="{x:Type TabItem}"> 
      <EventSetter Event="ButtonBase.Click" 
         Handler="TabItem_Click" /> 
     </Style> 
    </TabControl.ItemContainerStyle> 
.... 
</TabControl> 

Şimdi, olay işleyicisi biz tıklandığında sekmeyi seçebilirsiniz:

private void TabItem_Click(object sender, RoutedEventArgs e) 
{ 
    Trace.WriteLine("TabItemClicked"); 
    ((TabItem)sender).IsSelected = true; 
    e.Handled = true; 
} 
+0

Dhaval teşekkür ederiz. Bu yardımcı oldu. – HiteshP

5
yukarıdaki sorunun ri biraz RND yapıyordu

Şimdi ght ve yukarıdaki farklı bir şekilde başardı ama yine de uhv yürütülürken bana yardımcı olabilirdi harika olurdu. liste kutusu SelectionChanged olayda

Sadece İşte Tbctrl TabControl adıdır ve item2 tabitem içinde adıdır i yani

  Tbctrl.SelectedItem = (TabItem)Tbctrl.FindName("item2"); 

istediğiniz birine sekme denetiminin SelectedItem değişti Yukarıda belirtilen metin kutularını içeren tabcontrol.

Selamlar,