2010-07-19 3 views
0

WPF 용 DevComponents TabNavigation 컨트롤을 사용하고 특정 인덱스의 TabNavigation에 새 TabItem을 추가 할 수 있습니다. 뒤에. 이 코드를 실행하면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에가보기로 가져되는 대신, 그것은보기에 데려와 나는 원래 탭 : 지금은 수행하여, 새로운 TabItem의에게의 selectedItem을 만들고 싶어 가 켜져 있으면 신속하게 다시보기로 이동합니다.

왜 이런 일이 일어나는 지에 대한 아이디어가 있으면 어떻게 해결할 수 있는지 알려주세요. 다음 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를 설정해보십시오. Handled을 textBlock_MouseLeftButtonDown에서 True로 설정하십시오.

저는이 컨트롤에 익숙하지 않지만 TabControl처럼 작동하는 경우 탭을 클릭하면 볼 수 있도록하는 로직이 있습니다. 이 로직은 원래의 탭이 클릭 된 것을보고, 변경 한 후에 원래의 탭을 다시 볼 수있게합니다. EventArgs 개체를 Handled로 표시하면 WPF에서 부모 요소의 이벤트 처리기를 호출하지 않게되므로 탭이 다시 전환되지 않습니다.

+0

감사합니다. 그것은 완벽하게 작동했습니다. –