public void Init(IViewModel viewModel, Windows.Reactive.IReactive reactive) { this.viewModel = viewModel; this.listBoxController = reactive.CreateListBoxController <IStateHistoryItem>(this.listBox); this.listBoxController.OnSelect = this.viewModel.OnChangeHistoryChangeSelection; this.listBoxController.OnUpdateRow = (item, index, oldItem) => { if (oldItem != null) { listBox.Invalidate(listBox.GetItemRectangle(index)); } }; var updateStateHistoty = Updaters.Create( () => viewModel.ChangeHistoryItems, listBoxController.Update ); var updateBookmarksAndFocusedMessageMark = Updaters.Create( () => viewModel.IsChangeHistoryItemBookmarked, () => viewModel.FocusedMessagePositionInChangeHistory, (_1, _2) => listBox.Invalidate(new Rectangle(0, 0, (int)bookmarkAndFocusedMarkAreaWidth + 1, listBox.Height)) ); viewModel.ChangeNotification.CreateSubscription(() => { updateStateHistoty(); updateBookmarksAndFocusedMessageMark(); }); }
public void Init(Windows.Reactive.IReactive reactive) { pluginsListController = reactive.CreateListBoxController(pluginsListBox); pluginsListController.OnSelect = items => viewModel.OnSelect(items.FirstOrDefault() as IPluginListItem); }