| private void sfChat_SwipeEnded(object sender, MessageSwipeEndedEventArgs e)
{
(sfChat.GetType().GetRuntimeProperties().FirstOrDefault(x => x.Name == "FooterView").GetValue(this.sfChat) as Grid).IsVisible = false; } |
| <StackLayout Orientation="Vertical">
<sfChat:SfChat x:Name="sfChat" AllowSwiping="True"
Grid.Row="0" SwipeEnded="sfChat_SwipeEnded"
AllowMultilineInput="True"
ShowTypingIndicator="False"
Messages="{Binding Messages}"
ShowIncomingMessageAuthorName="True"
ShowOutgoingMessageAuthorName="True"
CurrentUser="{Binding CurrentUser}">
</sfChat:SfChat>
<Frame CornerRadius="5" Padding="0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="Auto"></RowDefinition>
</Grid.RowDefinitions>
<StackLayout Grid.Row="0" x:Name="ReplyBox" HorizontalOptions="FillAndExpand" IsVisible="False" Orientation="Horizontal">
<Frame CornerRadius="5" Padding="0" BackgroundColor="LightGray" HorizontalOptions="FillAndExpand">
<StackLayout Orientation="Horizontal" HorizontalOptions="FillAndExpand">
<BoxView WidthRequest="5" BackgroundColor="Orange">
</BoxView>
<StackLayout Orientation="Vertical" HorizontalOptions="FillAndExpand">
<Label x:Name="CustomerName" FontSize="Subtitle" HorizontalOptions="FillAndExpand"></Label>
<Label x:Name="Reply" HorizontalOptions="FillAndExpand"></Label>
</StackLayout>
<Button Text="X" BackgroundColor="Transparent" WidthRequest="35" VerticalOptions="Start" Clicked="Button_Clicked_1"></Button>
</StackLayout>
</Frame>
</StackLayout>
<StackLayout Grid.Row="1" Orientation="Horizontal">
<Image Source="sticker_icon.png" WidthRequest="30" HeightRequest="30" VerticalOptions="Center" HorizontalOptions="Center"></Image>
<Editor x:Name="Editor" AutoSize="TextChanges" FontSize="Small" Placeholder="Type a Message..." HorizontalOptions="FillAndExpand"></Editor>
<Image WidthRequest="30" VerticalOptions="Center" HeightRequest="30" Source="Send_icon.png">
<Image.GestureRecognizers>
<TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped">
</TapGestureRecognizer>
</Image.GestureRecognizers>
</Image>
</StackLayout>
</Grid>
</Frame> </StackLayout>.... { InitializeComponent();
sfChat.LeftSwipeViewTemplate = new DataTemplate(() =>
{
StackLayout stackLayout = new StackLayout();
stackLayout.HorizontalOptions = LayoutOptions.FillAndExpand;
stackLayout.Orientation = StackOrientation.Horizontal;
Label label = new Label();
label.Text = "Reply";
label.HorizontalOptions = LayoutOptions.Center;
label.VerticalOptions = LayoutOptions.Center;
stackLayout.Children.Add(label);
return stackLayout;
});
(sfChat.GetType().GetRuntimeProperties().FirstOrDefault(x => x.Name == "FooterView").GetValue(this.sfChat) as Grid).IsVisible = false;
}
private void sfChat_SwipeEnded(object sender, MessageSwipeEndedEventArgs e)
{
this.ReplyBox.IsVisible = true;
this.Reply.Text = (e.Message as TextMessage).Text;
this.CustomerName.Text = "Replying to " + (e.Message as TextMessage).Author.Name;
this.Editor.Focus();
}
private void Button_Clicked_1(object sender, EventArgs e)
{
this.ReplyBox.IsVisible = false;
}
private void TapGestureRecognizer_Tapped(object sender, EventArgs e)
{
this.viewModel.Messages.Add(new TextMessage() { Text = this.Editor.Text, Author = this.viewModel.CurrentUser });
this.Editor.Text = "";
this.ReplyBox.IsVisible = false;
} }.... |
Great response, looks like there is a small part missing
---- ( vii) Create custom message template for to show a replied message in SfChat conversation. )
Do you have a sample code to show the reply (box/message) in the TL (conversation).?
Many thanks!
Alfonso
Great!.. Many thanks Suja!
The solution works perfectly.
Regards,
Alfonso