2010-07-19 101 views
0

我正在爲WPF使用DevComponents TabNavigation控件,並且能夠將新的TabItem添加到特定索引處的TabNavigation,並將其稱爲i,背後。現在我想以使新的TabItem的的SelectedItem,這樣做:WPF DevComponents TabNavigation無法更改代碼隱藏中的SelectedIndex/Item

private void textBlock_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    int i = createNewTabItem(0, "Foo"); 

    TabNavigation tn = (((sender as TextBlock).Parent as Grid).Parent as TabItem).Parent as TabNavigation; 
    tn.SelectedItem = tn.Items[i]; 
} 

private int createNewTabItem(int overflowSrcPageNum, String header) 
{ 
    TabItem ti = new TabItem(); 
    ti.Header = header; 
    tabNavigation.Items.Insert(overflowSrcPageNum + 1, ti); 
    return overflowSrcPageNum + 1; 
} 

當我運行這段代碼,但是,而不是新的TabItem被帶入視圖,它被帶入視圖,然後原來的標籤我被打開後很快移回視圖。

如果任何人有任何想法,爲什麼發生這種情況,以及我如何解決它,請讓我知道。我附上了以下XAML的示例:

<Grid > 
     <Grid.Resources> 
      <ResourceDictionary> 
       <Style TargetType="TextBlock"> 
        <Style.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="TextDecorations" Value="Underline"></Setter> 
         </Trigger> 
        </Style.Triggers> 
        <Setter Property="Foreground" Value="White" /> 
        <Setter Property="FontFamily" Value="Segoe UI" /> 
        <Setter Property="FontSize" Value="11" /> 
        <Setter Property="FontWeight" Value="Bold" /> 
        <Setter Property="HorizontalAlignment" Value="Right" /> 
        <Setter Property="Text" Value="View More..." /> 
        <Setter Property="Visibility" Value="Visible" /> 
        <EventSetter Event="MouseLeftButtonDown" Handler="lblMoreCpartys_MouseLeftButtonDown" /> 
       </Style> 
      </ResourceDictionary> 
     </Grid.Resources> 
     <my:TabNavigation Background="Black" HorizontalAlignment="Stretch" Margin="0" Name="tabNavigation" 
         VerticalAlignment="Stretch" MouseLeftButtonDown="tabNavigation_MouseLeftButtonDown" 
         FontSize="12" Foreground="SteelBlue" ForceCursor="True" MouseWheel="tabNavigation_MouseWheel" 
         TabStripPlacement="Bottom"> 
      <TabItem Header="ITEM 1" Name="firstTabItem" FontSize="12" > 
        <TextBlock Name="firstTB" /> 
      </TabItem> 
      <TabItem Header="ITEM 2" Name="secondTabItem" FontSize="12" > 
        <TextBlock Name="secondTB" /> 
      </TabItem> 
     </my:TabNavigation> 
    </grid> 

在此先感謝。

回答

0

嘗試設置e。在textBlock_MouseLeftButtonDown中將Handled設置爲True。

我對這個控件並不熟悉,但是如果它像TabControl一樣工作,那麼它具有在點擊時將選項卡放入視圖的邏輯。該邏輯看到原始選項卡已被點擊,並在更改後將其重新顯示。將EventArgs對象標記爲Handled將會停止WPF在父元素上調用事件處理程序,這將阻止選項卡切換回來。

+0

謝謝!這工作完美。 – 2010-07-20 14:40:26