2010-07-19 105 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