作者:站在屋顶上的小柱子 | 来源:互联网 | 2023-01-21 19:05
我开发了一个与Xamarin.Forms(MVVM设计模式)的聊天应用程序.我需要在发送消息后自动向下滚动ListView(聊天消息列表).
我的看法:
...
...
由于我的设计模式,我不能使用ScrollTo方法(我是对的吗?)并且xaml中没有ScrollTo属性.
那么这个问题的解决方案是什么?
谢谢!
1> Gerald Versl..:
解决此问题的一种方法是使用MessagingCenter.
从您的PageModel发送信号,即
MessagingCenter.Send (this, "MessageReceived");
然后在您的Page的代码隐藏中,您可以订阅它并向下滚动或执行任何操作.
MessagingCenter.Subscribe (this, "MessageReceived", (sender) => {
MainScreenMessagesListView.ScrollTo(..., ScrollToPosition.End, true);
});
您必须将最后一项确定为您的对象,而不是点ListView
.您可以通过两种方式执行此操作,或者通过强制转换ItemsSource
属性来在页面中确定它ListView
.但也许最好将它作为MessagingCenter调用的参数提供.
在您的PageModel中,您可以将其更改为: MessagingCenter.Send (this, "MessageReceived", lastReceivedMessage);
并检索这样的值:
MessagingCenter.Subscribe (this, "MessageReceived", (sender, arg) => {
MainScreenMessagesListView.ScrollTo(arg, ScrollToPosition.End, true);
});