好了一個,少於優雅的方式,我想知道解決,這將是暴露您的ViewModel的Action<Message>
,然後你會ContentPage
初始化Action
,並告訴它做滾動。類似以下內容(只需將Message
替換爲真正的型號名稱即可)。
ContentPage:
public partial class MessagePage : ContentPage {
private MessageViewModel _viewModel;
public MessagePage() {
_viewModel = new MessageViewModel();
BindingContext = _viewModel;
_viewModel.OnMessageAdded = message => { //We tell the action to scroll to the passed in object here
MessageBox.ScrollTo(message, ScrollToPosition.MakeVisible, true);
}
}
}
視圖模型:
public class MessageViewModel {
public Action<Message> OnMessageAdded { get; set; }
public ICommand AddMessage { get; protected set; }
private ObservableCollection<Message> _tempTest;
public ObservableCollection<Message> TempTest {
get { return _tempTest ?? (_tempTest = new ObservableCollection<Message>()); }
set {
if(_tempTest != value) {
_tempTest = value;
OnPropertyChanged();
}
}
}
public MessageViewModel() {
AddMessage = new Command(async() => {
Message message = SomeClass.GetMessage(); //Get your object from your separate class
TempTest.Add(message); //Add it to the list that your ListView binds to
OnMessageAdded?.Invoke(message); //Now run the Action which, if it is not null, your ContentPage should have set to do the scrolling
//Or if you are not using C#6:
//Action<Message> onMessageAdded = OnMessageAdded;
//if(onMessageAdded != null) { onMessageAdded.Invoke(message); }
});
}
}
你試圖滾動到'Button's之一?您在代碼中使用的兩個Button都不在ListView中,因此它們無法滾動到。 – hvaughan3
我的按鈕有綁定到另一個類的命令,從那個類我添加新消息到我的視圖。 使整個消息可見(不母校多少,我添加滾動視圖消息) –
你的意思是滾動到_button_或_bottom_加入我要滾動視圖的消息後? –