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();
            });
        }
Ejemplo n.º 2
0
 public void Init(Windows.Reactive.IReactive reactive)
 {
     pluginsListController          = reactive.CreateListBoxController(pluginsListBox);
     pluginsListController.OnSelect = items => viewModel.OnSelect(items.FirstOrDefault() as IPluginListItem);
 }