mirror of
https://github.com/Nioux/AideDeJeu.git
synced 2025-10-29 22:45:44 +00:00
NavigateToLink command
This commit is contained in:
parent
2e2aef66c8
commit
2d75cb2c67
6 changed files with 43 additions and 8 deletions
|
|
@ -11,10 +11,11 @@
|
|||
using Extensions;
|
||||
using Markdig;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
|
||||
public class MarkdownView : ContentView
|
||||
{
|
||||
public Func<string, Task> NavigateToLink { get; set; } = async(s) => Device.OpenUri(new Uri(s));
|
||||
//public Func<string, Task> NavigateToLink { get; set; } = async(s) => Device.OpenUri(new Uri(s));
|
||||
|
||||
public static MarkdownTheme Global = new LightMarkdownTheme();
|
||||
|
||||
|
|
@ -42,6 +43,17 @@
|
|||
|
||||
public static readonly BindableProperty ThemeProperty = BindableProperty.Create(nameof(Theme), typeof(MarkdownTheme), typeof(MarkdownView), Global, propertyChanged: OnMarkdownChanged);
|
||||
|
||||
|
||||
public ICommand NavigateToLinkCommand
|
||||
{
|
||||
get { return (ICommand)GetValue(NavigateToLinkCommandProperty); }
|
||||
set { SetValue(NavigateToLinkCommandProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly BindableProperty NavigateToLinkCommandProperty = BindableProperty.Create(nameof(NavigateToLinkCommand), typeof(ICommand), typeof(MarkdownView)); //, Global, propertyChanged: OnMarkdownChanged);
|
||||
|
||||
|
||||
|
||||
private bool isQuoted;
|
||||
|
||||
private List<View> queuedViews = new List<View>();
|
||||
|
|
@ -101,11 +113,13 @@
|
|||
{
|
||||
var result = await Application.Current.MainPage.DisplayActionSheet("Ouvrir le lien", "Annuler", null, blockLinks.Select(x => x.Key).ToArray());
|
||||
var link = blockLinks.FirstOrDefault(x => x.Key == result);
|
||||
await NavigateToLink(link.Value);
|
||||
//await NavigateToLink(link.Value);
|
||||
NavigateToLinkCommand?.Execute(link.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
await NavigateToLink(blockLinks.First().Value);
|
||||
//await NavigateToLink(blockLinks.First().Value);
|
||||
NavigateToLinkCommand?.Execute(blockLinks.First().Value);
|
||||
}
|
||||
}
|
||||
catch (Exception) { }
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ using System.Collections.Generic;
|
|||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
using Xamarin.Forms;
|
||||
|
||||
namespace AideDeJeu.ViewModels
|
||||
|
|
@ -52,6 +53,14 @@ namespace AideDeJeu.ViewModels
|
|||
await Navigation.PushAsync(new FilteredItemsPage(itemsVM));
|
||||
}
|
||||
|
||||
private ICommand _NavigateToLinkCommand = null;
|
||||
public ICommand NavigateToLinkCommand
|
||||
{
|
||||
get
|
||||
{
|
||||
return _NavigateToLinkCommand ?? (_NavigateToLinkCommand = new Command<string>(async(s) => await NavigateToLinkAsync(s)));
|
||||
}
|
||||
}
|
||||
|
||||
public async Task NavigateToLinkAsync(string s)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@
|
|||
xmlns:tools="clr-namespace:AideDeJeu.Tools"
|
||||
xmlns:mdview="clr-namespace:Xam.Forms.Markdown"
|
||||
x:Class="AideDeJeu.Views.ItemDetailPage"
|
||||
Title="{Binding Title}">
|
||||
Title="{Binding Title}"
|
||||
x:Name="This">
|
||||
<ContentPage.Resources>
|
||||
<ResourceDictionary>
|
||||
<tools:MonsterMarkdownTheme x:Key="MonsterMarkdownTheme" />
|
||||
|
|
@ -15,6 +16,11 @@
|
|||
<ToolbarItem Name="About" Text="À propos de..." Order="Secondary" Icon="wooden_sign.png" Command="{Binding Main.AboutCommand}" />
|
||||
</ContentPage.ToolbarItems>
|
||||
<ScrollView Orientation="Vertical" BackgroundColor="#fdf1dc">
|
||||
<mdview:MarkdownView x:Name="mdMarkdown" Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding Item.Markdown}" />
|
||||
<mdview:MarkdownView
|
||||
x:Name="mdMarkdown"
|
||||
Theme="{StaticResource MonsterMarkdownTheme}"
|
||||
Markdown="{Binding Item.Markdown}"
|
||||
NavigateToLinkCommand="{Binding BindingContext.Main.Navigator.NavigateToLinkCommand, Source={x:Reference This}}"
|
||||
/>
|
||||
</ScrollView>
|
||||
</ContentPage>
|
||||
|
|
@ -19,7 +19,8 @@ namespace AideDeJeu.Views
|
|||
|
||||
BindingContext = this.viewModel = itemVM;
|
||||
|
||||
mdMarkdown.NavigateToLink = async (s) => await viewModel.Main.Navigator.NavigateToLinkAsync(s);
|
||||
|
||||
//mdMarkdown.NavigateToLink = async (s) => await viewModel.Main.Navigator.NavigateToLinkAsync(s);
|
||||
}
|
||||
|
||||
public ItemDetailPage()
|
||||
|
|
|
|||
|
|
@ -19,7 +19,12 @@
|
|||
</ContentPage.ToolbarItems>
|
||||
<ListView BackgroundColor="{StaticResource bgtan}" x:Name="ItemsListView" ItemsSource="{Binding Items}" VerticalOptions="FillAndExpand" HasUnevenRows="true" CachingStrategy="RecycleElement" SelectedItem="{Binding SelectedItem}" ItemTapped="ItemsListView_ItemTapped">
|
||||
<ListView.Header>
|
||||
<mdview:MarkdownView x:Name="mdMarkdown" Theme="{StaticResource MonsterMarkdownTheme}" Markdown="{Binding BindingContext.Items.Header, Source={x:Reference This}}" />
|
||||
<mdview:MarkdownView
|
||||
x:Name="mdMarkdown"
|
||||
Theme="{StaticResource MonsterMarkdownTheme}"
|
||||
Markdown="{Binding BindingContext.Items.Header, Source={x:Reference This}}"
|
||||
NavigateToLinkCommand="{Binding BindingContext.Main.Navigation.NavigateToLinkCommand, Source={x:Reference This}}"
|
||||
/>
|
||||
</ListView.Header>
|
||||
<ListView.ItemTemplate>
|
||||
<DataTemplate>
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ namespace AideDeJeu.Views
|
|||
|
||||
BindingContext = _ItemsViewModel = itemsViewModel;
|
||||
|
||||
mdMarkdown.NavigateToLink = async (s) => await itemsViewModel.Main.Navigator.NavigateToLinkAsync(s);
|
||||
//mdMarkdown.NavigateToLink = async (s) => await itemsViewModel.Main.Navigator.NavigateToLinkAsync(s);
|
||||
}
|
||||
public ItemsPage()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue