2017-10-03 6 views
0

Ich kann das Tabitem nicht aus viewmodel auswählen, ich versuche es mit isselected und selectedindex, aber es funktioniert immer noch nicht.Tabitem wird nicht aus Viewmodel ausgewählt

Ansichtsmodell:

 public int _selectedIndex; 
    public int SelectedTabIndex 
    { 
     get { return _selectedIndex; } 
     set 
     { 
      if (_selectedIndex != value) 
      { 
       _selectedIndex = value; 
       //if (RaisePropertyChanged != null) 
        RaisePropertyChanged("SelectedIndex"); 
      } 

     } 
    } 

XAML-Code:

<TabItem Header="Fault Code Table" DataContext="{Binding TESTModel, Source={StaticResource Locator}}" IsEnabled="True" TabIndex="{Binding Path=SelectedTabIndex ,Mode=TwoWay}" > 
          <StackPanel> 
           <local:FaultCodeTable />  
          </StackPanel> 
         </TabItem> 
+0

Bindung an 'SelectedIndex', nicht an 'TabIndex', was eine nicht verwandte Eigenschaft ist. Wenn Sie die Tabulatortaste verwenden, um durch Steuerelemente in einem Fenster zu wechseln, wird die Reihenfolge durch den TabIndex bestimmt, der jedem Steuerelement zugewiesen ist - jedes Steuerelement verfügt über diese Eigenschaft. –

+0

SelectedIndex ist für Tabitem nicht verfügbar. –

+0

Whoops, tut mir leid, ich habe nicht bemerkt, dass Sie das an "TabItem" anstatt an "TabControl" banden. 'TabControl.SelectedIndex' ist der Index des ausgewählten' TabItem' in diesem 'TabControl'. Hast du das versucht? –

Antwort

1

Sie sollten die SelectedIndex Eigentum der Eltern binden TabControl auf Ihre Quelleigenschaft:

<TabControl SelectedIndex="{Binding SelectedTabIndex}">... 

Eine individuelle TabItem hat eine IsSelected Eigenschaft, die Sie kann bestimmen, ob es gerade ausgewählt ist. Es hat jedoch kein Konzept für einen ausgewählten Index, da es kein ItemsControl ist.

+0

Danke, das hat funktioniert. und auch die Eigenschaft von Tabitem IsSelected ändert die Eigenschaft nur einmal. Das ist mein Viewmodel 'private bool _isselected; public bool Isselected { erhalten {return _isselected; } set { _isselected = Wert; RaisePropertyChanged ("_ Isselected"); } } 'und das meine XAML' ' –

+0

@SamKing Ihre öffentliche Eigenschaft heißt' Isselected'. Sie übergeben '" _Isselected "' an 'RaisePropertyChanged', aber die Eigenschaft' _Isselected' existiert nicht. Übergeben Sie den tatsächlichen Namen der Eigenschaft. –

+0

@EdPlunkett Ich habe eine öffentliche Eigenschaft definiert im Modell 'private bool _isselected; public bool Isselected { erhalten {return _isselected; } set { _isselected = Wert; RaisePropertyChanged ("_ Isselected"); } } ' –

Verwandte Themen