의 인덱스를 알고하는 방법 :이 같은 XAML에서이 동적으로 생성 TabItem의
뷰 모델에서<controls:TabControl Grid.Row="0" BorderThickness="0" Background="White"
ItemsSource="{Binding TabList, Mode=TwoWay, Converter={StaticResource TabConverter}}"
SelectedItem="{Binding CurrentItem, Mode=TwoWay}"/>
난이 : (XAML에서)
private TabItem currentItem;
public TabItem CurrentItem
{
get { return currentItem; }
set
{
//currentItem.Content
currentItem = value;
int index = currentItem.TabIndex; //IT GIVES STRANgE INDEX ON DEBUGGING ob Tab click (like 22255788586)
OnPropertyChanged("CurrentItem");
}
}
그러나이 tablist에서이 같이 동적으로 생성된다 :
public void AddVersion(ProgramVersion pv) //it creates the TabList
{
if (pv != null)
{
if (index == -1)
{
TabList.Add(new ProgramVersionItemViewModel(pv));
OnPropertyChanged("TabList");
}
}
}
버튼을 누를 때마다 AddVersion (version) 함수를 호출합니다. TabList에 추가됩니다.
문제는 동적으로 생성 된 TabItems (TabList)의 수를 CurrentItem으로 누른 다음 이상한 주소가 매우 큼 (예 : 222557456) 문제입니다.
현재 항목의 색인을 얻는 방법이 잘못 되었습니까? (int index = currentItem.TabIndex;)?
'TabIndex'은 *하지 * 탭의 인덱스 -이 컨트롤 사이 순환 Tab 키를 누른 상태에서 컨트롤을 주문할있다. – Luaan
** TabIndex **는 TabControl 내부의 항목 인덱스를 의미하지 않습니다. ViewModel List가 있으므로 ** SelectedItem **은 TabItem을 반환하지 않을 수도 있고, 현재 TabItem에 바인딩 된 ViewModel을 참조해야합니다. ** TabList.IndexOf (CurrentItem) ** 대신이 시도 할 수 있습니다. – Claw
@ Luaan 그래서 현재 항목의 인덱스를 알기 위해 솔루션을 어떻게 수행할까요? CurrentItem 세트 안에 있습니까? – user3735822