maui chat app
1.0.0
이 예제는 DeVexpress .NET Maui 구성 요소를 사용하여 발신자 및 수신기 메시지, 제안 된 빠른 답장 및 응답 입력 컨트롤과 채팅보기를 표시합니다.

SafeKeyboardAreaView 를 뷰 레이아웃의 루트로 사용하십시오. 이러한 방식으로 구현되면 장치 키보드는 화면에 표시 될 때 메시지보기와 겹치지 않습니다.
< dx : SafeKeyboardAreaView >
...
</ dx : SafeKeyboardAreaView > DXCollectionView 컨트롤을 사용하여 메시지를 표시하십시오. 데이터 소스 및 항목 템플릿을 지정합니다 (발신자 및 수신기에는 다른 템플릿 사용). 날짜/시간 범위 ( "오늘", "어제", "마지막 주"등을 사용하는 내장 알고리즘을 사용하는 항목을 그룹화합니다. 그룹 헤더의 템플릿을 지정하십시오.
< dxcv : DXCollectionView
ItemsSource = " {Binding Messages} "
ItemTemplate = " {local:MessageTemplateSelector SenderTemplate=..., RecipientTemplate=...} "
GroupHeaderTemplate = " {StaticResource dayGroupTemplate} "
...
>
< dxcv : DXCollectionView .GroupDescription>
< dxcv : GroupDescription FieldName = " SentAt " GroupInterval = " DateRange " />
</ dxcv : DXCollectionView .GroupDescription>
</ dxcv : DXCollectionView > DXContentPresenter 구성 요소를 사용하여 발신자 및 수신자 메시지의 템플릿을 정의하십시오.
< ContentPage .Resources>
< DataTemplate x : Key = " senderMessageTemplate " x : DataType = " {x:Type local:Message} " >
< dx : DXContentPresenter ... >
</ dx : DXContentPresenter >
</ DataTemplate >
< DataTemplate x : Key = " recipientMessageTemplate " x : DataType = " {x:Type local:Message} " >
< dx : DXContentPresenter ... >
</ dx : DXContentPresenter >
</ DataTemplate >
...
</ ContentPage .Resources> DXCollectionView.ScrollTo() 메소드를 호출하여 마지막 메시지로 뷰를 스크롤하십시오.
public partial class MainPage : ContentPage {
// ...
void OnMessagesCollectionChanged ( object sender , NotifyCollectionChangedEventArgs e ) {
chatSurface . ScrollTo ( chatSurface . GetItemHandle ( vm . Messages . Count - 1 ) ) ;
}
} ChipGroup 컨트롤을 사용하여 짧은 답변을 표시하십시오.
< dxe : ChipGroup ...
DisplayMember = " Text "
ItemsSource = " {Binding SuggestedActions} " /> public ChatViewModel ( ) {
// ...
SuggestedActions = new ObservableCollection < SuggestedAction > ( ) {
new SuggestedAction ( ) { Message = new Message ( ) { Sender = Me , SentAt = DateTime . Now , Text = "Sure" } , Text = "Sure" } ,
new SuggestedAction ( ) { Message = new Message ( ) { Sender = Me , SentAt = DateTime . Now , Text = "Great" } , Text = "Great" } ,
new SuggestedAction ( ) { Message = new Message ( ) { Sender = Me , SentAt = DateTime . Now , Text = "Thank you" } , Text = "Thank you" } ,
new SuggestedAction ( ) { Message = new Message ( ) { Sender = Me , SentAt = DateTime . Now , Text = "My pleasure" } , Text = "My pleasure" }
} ;
} TextEdit 컨트롤을 사용하여 문자 메시지 입력 필드를 작성/표시하십시오. 메시지를 보내려면 dxbutton 컨트롤을 지정하십시오.
< Grid ... >
< dxe : TextEdit ...
x : Name = " messageEditor "
Text = " {Binding EditMessageText} " />
< dx : DXButton ...
Command = " {Binding SendMessageCommand} "
CommandParameter = " {Binding EditMessageText} " />
</ Grid >(응답을 제출하려면 devexpress.com으로 리디렉션됩니다)