Fixed issue navigating away and back to tab view
This commit is contained in:
parent
f691deab6a
commit
109457d6fa
@ -153,7 +153,7 @@ namespace Aurora.Design.Components.TabView
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SetCurrentTab(0, true);
|
SetCurrentTab(SelectedTabIndex, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -439,7 +439,13 @@ namespace Aurora.Design.Components.TabView
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region SelectedTabIndex
|
#region SelectedTabIndex
|
||||||
public static readonly BindableProperty SelectedTabIndexProperty = BindableProperty.Create(nameof(SelectedTabIndex), typeof(int), typeof(TabViewControl), 0, propertyChanged: OnSelectedTabIndexChanged);
|
public static readonly BindableProperty SelectedTabIndexProperty = BindableProperty.Create(
|
||||||
|
nameof(SelectedTabIndex),
|
||||||
|
typeof(int),
|
||||||
|
typeof(TabViewControl),
|
||||||
|
defaultValue: 0,
|
||||||
|
defaultBindingMode: BindingMode.TwoWay,
|
||||||
|
propertyChanged: OnSelectedTabIndexChanged);
|
||||||
private static void OnSelectedTabIndexChanged(BindableObject bindable, object oldValue, object newValue)
|
private static void OnSelectedTabIndexChanged(BindableObject bindable, object oldValue, object newValue)
|
||||||
{
|
{
|
||||||
if (bindable is TabViewControl tabViewControl && tabViewControl.ItemSource != null)
|
if (bindable is TabViewControl tabViewControl && tabViewControl.ItemSource != null)
|
||||||
@ -477,14 +483,25 @@ namespace Aurora.Design.Components.TabView
|
|||||||
|
|
||||||
if (((position >= 0 && position < ItemSource.Count) || initialRun))
|
if (((position >= 0 && position < ItemSource.Count) || initialRun))
|
||||||
{
|
{
|
||||||
if (oldPosition < ItemSource.Count && _mainContainerSL.Children.Count == 2)
|
if (oldPosition < ItemSource.Count)
|
||||||
|
{
|
||||||
|
List<bool> tabActiveList = ItemSource.Select((TabItem tab, int index) =>
|
||||||
|
{
|
||||||
|
return index == position;
|
||||||
|
})
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
for (int i = 0; i < tabActiveList.Count(); i++)
|
||||||
|
{
|
||||||
|
ItemSource[i].IsCurrent = tabActiveList[i];
|
||||||
|
}
|
||||||
|
// Remove second child
|
||||||
|
if (_mainContainerSL.Children.Count == 2)
|
||||||
{
|
{
|
||||||
ItemSource[oldPosition].IsCurrent = false;
|
|
||||||
//Remove second child
|
|
||||||
_mainContainerSL.Children.RemoveAt(1);
|
_mainContainerSL.Children.RemoveAt(1);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
_mainContainerSL.Children.Add(ItemSource[position].Content);
|
_mainContainerSL.Children.Add(ItemSource[position].Content);
|
||||||
ItemSource[position].IsCurrent = true;
|
|
||||||
SelectedTabIndex = position;
|
SelectedTabIndex = position;
|
||||||
Device.BeginInvokeOnMainThread(async () => await _tabHeadersContainerSv.ScrollToAsync(_headerContainerGrid.Children[position], ScrollToPosition.MakeVisible, false));
|
Device.BeginInvokeOnMainThread(async () => await _tabHeadersContainerSv.ScrollToAsync(_headerContainerGrid.Children[position], ScrollToPosition.MakeVisible, false));
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
HorizontalOptions="FillAndExpand"
|
HorizontalOptions="FillAndExpand"
|
||||||
VerticalOptions="FillAndExpand"
|
VerticalOptions="FillAndExpand"
|
||||||
TabSizeOption="100"
|
TabSizeOption="100"
|
||||||
|
SelectedTabIndex="{Binding SelectedTabIndex}"
|
||||||
HeaderBackgroundColor="#232323"
|
HeaderBackgroundColor="#232323"
|
||||||
x:Name="TabView">
|
x:Name="TabView">
|
||||||
<tabView:TabViewControl.ItemSource>
|
<tabView:TabViewControl.ItemSource>
|
||||||
|
@ -34,6 +34,8 @@ namespace Aurora.Design.Views.Party
|
|||||||
private BaseMedia _selectedMedia;
|
private BaseMedia _selectedMedia;
|
||||||
private ClientService _client;
|
private ClientService _client;
|
||||||
|
|
||||||
|
private int _selectedTabIndex;
|
||||||
|
|
||||||
public PartyViewModel()
|
public PartyViewModel()
|
||||||
{
|
{
|
||||||
_members = new ObservableCollection<PartyMember>();
|
_members = new ObservableCollection<PartyMember>();
|
||||||
@ -59,6 +61,12 @@ namespace Aurora.Design.Views.Party
|
|||||||
|
|
||||||
#region Properties
|
#region Properties
|
||||||
|
|
||||||
|
public int SelectedTabIndex
|
||||||
|
{
|
||||||
|
get { return _selectedTabIndex; }
|
||||||
|
set { SetProperty(ref _selectedTabIndex, value); }
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Publc property for the members list
|
/// Publc property for the members list
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -119,6 +127,7 @@ namespace Aurora.Design.Views.Party
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public override async Task OnActive()
|
public override async Task OnActive()
|
||||||
{
|
{
|
||||||
|
OnPropertyChanged("SelectedTabIndex");
|
||||||
if (this._state == PartyState.Hosting ||
|
if (this._state == PartyState.Hosting ||
|
||||||
this._state == PartyState.InParty)
|
this._state == PartyState.InParty)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user