Attempts to get horizontal list to work

This commit is contained in:
watsonb8
2019-07-10 17:17:10 -04:00
parent 823e1341ca
commit c99f752174
6 changed files with 190 additions and 125 deletions

View File

@ -3,7 +3,8 @@
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:hs="clr-namespace:Aurora.Design.Components.HostSelector"
xmlns:ml="clr-namespace:Aurora.Design.Components.MemberList"
xmlns:hl="clr-namespace:Aurora.Design.Components.HorizontalList"
xmlns:renderedViews="clr-namespace:Sharpnado.Presentation.Forms.RenderedViews;assembly=Sharpnado.Presentation.Forms"
xmlns:qu="clr-namespace:Aurora.Design.Components.Queue"
x:Class="Aurora.Design.Views.Party.PartyView">
<ContentView.Content>
@ -17,9 +18,20 @@
IsVisible="{Binding IsNotSelectingHost}">
<Label
Text="Party Members"/>
<ml:MemberList
VerticalOptions="FillAndExpand"
Members="{Binding Members}"/>
<hl:HorizontalList
x:Name="MembersHorizontalList"
ListOrientation="Horizontal"
VerticalOptions="Start"
ItemsSource="{Binding Members}">
<hl:HorizontalList.ItemTemplate>
<DataTemplate>
<Frame>
<Label
Text="{Binding UserName}"/>
</Frame>
</DataTemplate>
</hl:HorizontalList.ItemTemplate>
</hl:HorizontalList>
<Label
Text="Queue"/>
<qu:Queue/>

View File

@ -28,7 +28,11 @@ namespace Aurora.Design.Views.Party
{
this.JoinCommand = new Command(OnJoinExecute, CanJoinExecute);
this.HostCommand = new Command(OnHostExecute, CanHostExecute);
_members = new ObservableCollection<PartyMember>();
_members = new ObservableCollection<PartyMember>
{
new PartyMember{UserName = "asdf"}
};
State(PartyState.SelectingHost);
}
@ -49,7 +53,10 @@ namespace Aurora.Design.Views.Party
{
return _members;
}
set { SetProperty(ref _members, value); }
set
{
SetProperty(ref _members, value);
}
}
public bool IsSelectingHost
@ -87,7 +94,8 @@ namespace Aurora.Design.Views.Party
_executor = BaseExecutor.CreateExecutor<ClientExecutor>();
_executor.Connect(this.Hostname);
SetUpMembers();
SetupMembersCollection();
OnPropertyChanged("Members");
State(PartyState.Connecting);
}
@ -104,7 +112,8 @@ namespace Aurora.Design.Views.Party
_executor = BaseExecutor.CreateExecutor<HostExecutor>();
_executor.Connect(this.Hostname);
SetUpMembers();
SetupMembersCollection();
OnPropertyChanged("Members");
//Change state
State(PartyState.Connecting);
@ -118,18 +127,41 @@ namespace Aurora.Design.Views.Party
#endregion Commands
private void SetUpMembers()
private void SetupMembersCollection()
{
_members = _executor.PartyMembers;
OnPropertyChanged("Members");
_executor.PartyMembers.CollectionChanged += (sender, e) =>
if (_executor != null)
{
if (_executor != null)
foreach (PartyMember member in _executor.PartyMembers)
{
_members = _executor.PartyMembers;
_members.Add(member);
}
OnPropertyChanged("Members");
};
//Setup events
_executor.PartyMembers.CollectionChanged += (sender, e) =>
{
switch (e.Action)
{
case System.Collections.Specialized.NotifyCollectionChangedAction.Add:
{
foreach (PartyMember member in e.NewItems)
{
Members.Add(member);
OnPropertyChanged("Members");
}
break;
}
case System.Collections.Specialized.NotifyCollectionChangedAction.Remove:
{
foreach (PartyMember member in e.OldItems)
{
Members.Remove(member);
OnPropertyChanged("Members");
}
break;
}
}
};
}
}
}
}