用 StackLayout 嵌套 ScrollView 可实现 MAui基础聊天界面:消息容器设 VerticalOptions=”FillAndExpand”,ScrollView 包裹消息区并禁用水平滚动;每条消息用 HorizontalStackLayout+Frame 气泡,接收靠左、发送靠右,Frame 设padding=”12,8″、CornerRadius=”16″ 及不同背景色。

用 StackLayout + ScrollView 实现基础聊天界面
MAUI 里没有现成的“聊天控件”,但用 StackLayout 嵌套 ScrollView 就能快速搭出可滚动的对话流。关键点是:消息容器必须设VerticalOptions=”FillAndExpand”,ScrollView 要包裹整个消息区,且禁用水平滚动(HorizontalOptions=”Start”)。
左右区分消息气泡(发送 / 接收)
每条消息用一个HorizontalStackLayout,内部放Frame(带圆角和阴影的气泡)。接收消息靠左(HorizontalOptions=”Start”),发送消息靠右(HorizontalOptions=”End”)。注意给 Frame 设置Padding=”12,8″、CornerRadius=”16″,再配不同背景色(比如接收用)。
输入框 + 发送按钮横排布局
底部用 HorizontalStackLayout 放Entry和 Button。Entry 设VerticalOptions=”Center” 和HeightRequest=”44″;Button 宽高一致,图标可用 FontImageSource。别忘了绑定Command 到发送逻辑,并在发送后清空 Entry.Text。
动态刷新消息列表(避免手动 ScrollTo)
- 用 ObservableCollection
绑定到 ListView 或 CollectionView(推荐后者) - 每条 Message 对象含 Text、IsSent(bool)、Timestamp 等属性
- 添加新消息后,调用Messages.Add(newMsg),UI 自动更新
- 如需自动滚到底部,在 Add 后加collectionView.ScrollTo(Messages.Count – 1, position: ScrollToPosition.End, animate: true)
基本上就这些。不复杂但容易忽略 VerticalOptions 和 ScrollTo 时机——消息加完再滚动,不然可能滚不到最新一条。