У меня есть пользовательский элемент управления WPF, и вот код, где я инициализирую модель представления и подписываюсь на событие.
public partial class MyUserControl : UserControl
{
public MyUserControl()
{
InitializeComponent();
this.DataContext = new MyUserControlViewModel();
((MyUserControlViewModel)this.DataContext).MainModel.MessageDataNew.CollectionChanged += NewMessage_CollectionChanged;
}
Это событие изменения коллекции, и ононе стреляет: (
private void NewMessage_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
if (MessageStatus != null)
{
var border = (Border)VisualTreeHelper.GetChild(MessageStatus, 0);
var scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
scrollViewer.ScrollToBottom();
}
}
Это мой конструктор модели представления. Я использую GalaSoft.MvvmLight.Messaging
public class MyUserControlViewModel: INotifyPropertyChanged
{
public MyUserControlViewModel()
{
Messenger.Default.Register<string>(this, "SimulatorLogs", AddtoCollection);
}
public MainModel MainModel
{
get { return _mainModel; }
set
{ _mainModel = value;
RaisePropertyChanged(() => MainModel);
}
}
private void AddtoCollection(string measurementData)
{
MainModel.MessageDataNew.Add(measurementData);
}
}