public IAsyncOperation <ContentDialogBaseResult> ShowAsync(GallerySecretViewModel parameter, Func <FrameworkElement> closing) { _destructed = false; _playedOnce = false; _lastPosition = TimeSpan.Zero; _closing = closing; ConnectedAnimationService.GetForCurrentView().PrepareToAnimate("FullScreenPicture", _closing()); DataContext = parameter; Bindings.Update(); RoutedEventHandler handler = null; handler = new RoutedEventHandler(async(s, args) => { Loaded -= handler; await ViewModel.OnNavigatedToAsync(parameter, NavigationMode.New, null); }); Loaded += handler; return(ShowAsync()); }
public static async void SecretDownload_Click(FrameworkElement sender, TransferCompletedEventArgs e) { var element = sender as FrameworkElement; var message = element.DataContext as TLMessage; if (message == null) { return; } var bubble = element.Ancestors <MessageBubbleBase>().FirstOrDefault() as MessageBubbleBase; if (bubble == null) { return; } if (message.IsMediaUnread && !message.IsOut) { var vector = new TLVector <int> { message.Id }; if (message.Parent is TLChannel channel) { bubble.ContextBase.Aggregator.Publish(new TLUpdateChannelReadMessagesContents { ChannelId = channel.Id, Messages = vector }); bubble.ContextBase.ProtoService.ReadMessageContentsAsync(channel.ToInputChannel(), vector, result => { message.IsMediaUnread = false; message.RaisePropertyChanged(() => message.IsMediaUnread); }); } else { bubble.ContextBase.Aggregator.Publish(new TLUpdateReadMessagesContents { Messages = vector }); bubble.ContextBase.ProtoService.ReadMessageContentsAsync(vector, result => { message.IsMediaUnread = false; message.RaisePropertyChanged(() => message.IsMediaUnread); }); } } var media = element.Ancestors().FirstOrDefault(x => x is FrameworkElement && ((FrameworkElement)x).Name.Equals("Media")) as FrameworkElement; if (media == null) { media = element; } if (media is Grid grid) { // TODO: WARNING!!! media = grid.Children[1] as FrameworkElement; } if (message.Parent != null) { var viewModel = new GallerySecretViewModel(message.Parent.ToInputPeer(), message, bubble.ContextBase.ProtoService, bubble.ContextBase.CacheService, bubble.ContextBase.Aggregator); await GallerySecretView.Current.ShowAsync(viewModel, () => media); } }