private SAThreadViewEventArgs CreateViewmodel(Uri parameter) { // try and parse a thread page from the html ThreadPageMetadata page = MetadataExtensions.ThreadPageFromUri(parameter); // since we have a page, create thread metadata from it ThreadMetadata thread = new ThreadMetadata() { ThreadID = page.ThreadID, Title = page.ThreadTitle, PageCount = page.LastPage }; // create binding wrappers Data.ThreadDataSource threadSource = new Data.ThreadDataSource(thread); Data.ThreadPageDataObject pageSource = new Data.ThreadPageDataObject(page); // create viewmodel ViewModels.ThreadViewModel viewmodel = new ViewModels.ThreadViewModel(); int pageIndex = pageSource.PageNumber - 1; viewmodel.UpdateModel(threadSource); viewmodel.Pages[pageIndex] = pageSource; // set the current page to page source viewmodel.SelectedItem = viewmodel.Pages[pageIndex]; viewmodel.SelectedIndex = pageIndex; return(new SAThreadViewEventArgs(viewmodel)); }
public ThreadViewPage() { InitializeComponent(); viewmodel = new ViewModels.ThreadViewModel(); SetThreadNavCommands(viewmodel); _threadStack = new Stack<ViewModels.ThreadViewModel>(); Commands.EditPostCommand.EditRequested += new ThreadPostRequestEventHandler(OpenEditWindow); Commands.ViewSAThreadCommand.ViewThread += OnSAUriLinkSelected; Commands.ViewSAThreadCommand.ViewLoading += ViewSAThreadCommand_ViewLoading; Commands.ViewSAThreadCommand.ViewFailed += ViewSAThreadCommand_ViewFailed; viewmodel.ReadyToBind += OnViewModelReadyToBind; viewmodel.UpdateFailed += OnViewModelUpdateFailed; Loaded += ThreadViewPage_Loaded; threadReplyControl.Loaded += WireThreadReplyControl; }
public SAThreadViewEventArgs(ViewModels.ThreadViewModel viewmodel) { Viewmodel = viewmodel; }