Skip to content

Commit 6dafb91

Browse files
azchohfimichael-hawker
authored andcommitted
Moved OnLinkClicked event to MarkdownTextBlock.
1 parent 5de5ceb commit 6dafb91

File tree

8 files changed

+21
-15
lines changed

8 files changed

+21
-15
lines changed

components/MarkdownTextBlock/samples/MarkdownTextBlockCustomSample.xaml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. See the LICENSE file in the project root for more information. -->
1+
<!-- Licensed to the .NET Foundation under one or more agreements. The .NET Foundation licenses this file to you under the MIT license. See the LICENSE file in the project root for more information. -->
22
<Page x:Class="MarkdownTextBlockExperiment.Samples.MarkdownTextBlockCustomSample"
33
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
44
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
@@ -25,7 +25,8 @@
2525
<ColumnDefinition Width="*" />
2626
<ColumnDefinition Width="*" />
2727
</Grid.ColumnDefinitions>
28-
<controls:MarkdownTextBlock Grid.Column="0"
28+
<controls:MarkdownTextBlock x:Name="MarkdownTextBlock1"
29+
Grid.Column="0"
2930
Config="{x:Bind LiveMarkdownConfig, Mode=OneTime}"
3031
Text="{x:Bind MarkdownTextBox.Text, Mode=OneWay}" />
3132
<TextBox x:Name="MarkdownTextBox"
@@ -37,7 +38,8 @@
3738
FontSize="16"
3839
FontWeight="Bold"
3940
Text="Built-in Sample" />
40-
<controls:MarkdownTextBlock Grid.Row="3"
41+
<controls:MarkdownTextBlock x:Name="MarkdownTextBlock2"
42+
Grid.Row="3"
4143
Config="{x:Bind MarkdownConfig, Mode=OneTime}"
4244
Text="{x:Bind Text, Mode=OneTime}" />
4345
</Grid>

components/MarkdownTextBlock/samples/MarkdownTextBlockCustomSample.xaml.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -604,14 +604,14 @@ public MarkdownTextBlockCustomSample()
604604
{
605605
this.InitializeComponent();
606606
_config = new MarkdownConfig();
607-
_config.OnLinkClicked += this._config_OnLinkClicked;
608607
_liveConfig = new MarkdownConfig();
609-
_liveConfig.OnLinkClicked += this._config_OnLinkClicked;
610608
_text = _markdown;
611609
MarkdownTextBox.Text = "# Hello World\n\n";
610+
MarkdownTextBlock1.OnLinkClicked += MarkdownTextBlock_OnLinkClicked;
611+
MarkdownTextBlock2.OnLinkClicked += MarkdownTextBlock_OnLinkClicked;
612612
}
613613

614-
private void _config_OnLinkClicked(object? sender, LinkClickedEventArgs e)
614+
private void MarkdownTextBlock_OnLinkClicked(object? sender, LinkClickedEventArgs e)
615615
{
616616
Debug.WriteLine($"Link Clicked: {e.Uri}");
617617
}

components/MarkdownTextBlock/src/HtmlWriter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public static void WriteHtml(WinUIRenderer renderer, HtmlNodeCollection nodes)
3636
var myHyperlinkButton = new MyHyperlinkButton(node, renderer.Config.BaseUrl);
3737
myHyperlinkButton.ClickEvent += (sender, e) =>
3838
{
39-
renderer.Config.RaiseLinkClickedEvent(renderer, ((HyperlinkButton)sender).NavigateUri);
39+
renderer.MarkdownTextBlock.RaiseLinkClickedEvent(((HyperlinkButton)sender).NavigateUri);
4040
};
4141
hyperLink = myHyperlinkButton;
4242
}
@@ -45,7 +45,7 @@ public static void WriteHtml(WinUIRenderer renderer, HtmlNodeCollection nodes)
4545
var myHyperlink = new MyHyperlink(node, renderer.Config.BaseUrl);
4646
myHyperlink.ClickEvent += (sender, e) =>
4747
{
48-
renderer.Config.RaiseLinkClickedEvent(renderer, sender.NavigateUri);
48+
renderer.MarkdownTextBlock.RaiseLinkClickedEvent(sender.NavigateUri);
4949
};
5050
hyperLink = myHyperlink;
5151
}

components/MarkdownTextBlock/src/MarkdownConfig.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ public record MarkdownConfig
1212
public IImageProvider? ImageProvider { get; set; }
1313
public ISVGRenderer? SVGRenderer { get; set; }
1414
public MarkdownThemes Themes { get; set; } = MarkdownThemes.Default;
15-
public event EventHandler<LinkClickedEventArgs>? OnLinkClicked;
16-
internal void RaiseLinkClickedEvent(object? sender, Uri uri) => OnLinkClicked?.Invoke(sender, new LinkClickedEventArgs(uri));
1715

1816
public static MarkdownConfig Default = new();
1917
}

components/MarkdownTextBlock/src/MarkdownTextBlock.xaml.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ public string Text
4242
set => SetValue(TextProperty, value);
4343
}
4444

45+
public event EventHandler<LinkClickedEventArgs>? OnLinkClicked;
46+
47+
internal void RaiseLinkClickedEvent(Uri uri) => OnLinkClicked?.Invoke(this, new LinkClickedEventArgs(uri));
48+
4549
private static void OnConfigChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
4650
{
4751
if (d is MarkdownTextBlock self && e.NewValue != null)
@@ -110,7 +114,7 @@ private void Build()
110114
{
111115
if (_renderer == null)
112116
{
113-
_renderer = new WinUIRenderer(_document, Config);
117+
_renderer = new WinUIRenderer(_document, Config, this);
114118
}
115119
_pipeline.Setup(_renderer);
116120
ApplyText(false);

components/MarkdownTextBlock/src/Renderers/ObjectRenderers/Inlines/AutoLinkInlineRenderer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ protected override void Write(WinUIRenderer renderer, AutolinkInline link)
2828
var autolink = new MyAutolinkInline(link);
2929
autolink.ClickEvent += (sender, e) =>
3030
{
31-
renderer.Config.RaiseLinkClickedEvent(renderer, sender.NavigateUri);
31+
renderer.MarkdownTextBlock.RaiseLinkClickedEvent(sender.NavigateUri);
3232
};
3333

3434
renderer.Push(autolink);

components/MarkdownTextBlock/src/Renderers/ObjectRenderers/Inlines/LinkInlineRenderer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ protected override void Write(WinUIRenderer renderer, LinkInline link)
3333
var myHyperlinkButton = new MyHyperlinkButton(link, renderer.Config.BaseUrl);
3434
myHyperlinkButton.ClickEvent += (sender, e) =>
3535
{
36-
renderer.Config.RaiseLinkClickedEvent(renderer, ((HyperlinkButton)sender).NavigateUri);
36+
renderer.MarkdownTextBlock.RaiseLinkClickedEvent(((HyperlinkButton)sender).NavigateUri);
3737
};
3838
renderer.Push(myHyperlinkButton);
3939
}
@@ -42,7 +42,7 @@ protected override void Write(WinUIRenderer renderer, LinkInline link)
4242
var hyperlink = new MyHyperlink(link, renderer.Config.BaseUrl);
4343
hyperlink.ClickEvent += (sender, e) =>
4444
{
45-
renderer.Config.RaiseLinkClickedEvent(renderer, sender.NavigateUri);
45+
renderer.MarkdownTextBlock.RaiseLinkClickedEvent(sender.NavigateUri);
4646
};
4747

4848
renderer.Push(hyperlink);

components/MarkdownTextBlock/src/Renderers/WinUIRenderer.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,13 @@ public MarkdownConfig Config
2323
get => _config;
2424
set => _config = value;
2525
}
26+
public MarkdownTextBlock MarkdownTextBlock { get; }
2627

27-
public WinUIRenderer(MyFlowDocument document, MarkdownConfig config)
28+
public WinUIRenderer(MyFlowDocument document, MarkdownConfig config, MarkdownTextBlock markdownTextBlock)
2829
{
2930
_buffer = new char[1024];
3031
Config = config;
32+
MarkdownTextBlock = markdownTextBlock;
3133
FlowDocument = document;
3234
// set style
3335
_stack.Push(FlowDocument);

0 commit comments

Comments
 (0)