Skip to content

Commit

Permalink
Fix links except API
Browse files Browse the repository at this point in the history
Ready for API generation
  • Loading branch information
ChrisPulman committed Oct 28, 2023
1 parent 3f58b78 commit 7ac1256
Show file tree
Hide file tree
Showing 46 changed files with 197 additions and 197 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@
ReactiveUI is made possible by people like you, who review pull-requests made by the community.
</h2>
<div>
<img src="@Context.GetLink("/code-review-teams.png")" style="width: 100%">
<img src="~/images/code-review-teams.png" style="width: 100%">
</div>
<div>
<img src="@Context.GetLink("/nerd-snipe-the-appropriate-review-team.png")" style="width: 100%">
<img src="~/images/nerd-snipe-the-appropriate-review-team.png" style="width: 100%">
</div>


Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ Title: Triaging GitHub issues
@inherits StatiqRazorPage<IDocument>

<li><a href="https://github.com/reactiveui/ReactiveUI/pull/1448">housekeeping and proposal labels won't be autoclosed</a></li>
<li> <a href="@Context.GetLink("/posts/2017/08/automatic-closure-of-stale-github-issues")">Automatic closure of stale Github issues</a></li>
<li> <a href="~/Announcements/2017-08-25-automatic-closure-of-stale-github-issues.md">Automatic closure of stale Github issues</a></li>

18 changes: 9 additions & 9 deletions reactiveui/docs/getting-started/compelling-example.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ In [Visual Studio](https://visualstudio.microsoft.com/), create a new WPF applic

Install-Package ReactiveUI.WPF

The complete list containing NuGet packages for all supported platforms [can be found here](docs/getting-started/installation/). [ReactiveUI](https://www.nuget.org/packages/reactiveui/) main package should normally be installed into you .NET Standard class libraries containing platform-agnostic code (repositories, services, DTOs, view-models), and `ReactiveUI.XXX` packages are platform-specific, so we use [ReactiveUI.WPF](https://www.nuget.org/packages/ReactiveUI.WPF/) in this tutorial as we are developing a tiny WPF application that doesn't need code sharing.
The complete list containing NuGet packages for all supported platforms [can be found here](~/docs/getting-started/installation/index.md). [ReactiveUI](https://www.nuget.org/packages/reactiveui/) main package should normally be installed into you .NET Standard class libraries containing platform-agnostic code (repositories, services, DTOs, view-models), and `ReactiveUI.XXX` packages are platform-specific, so we use [ReactiveUI.WPF](https://www.nuget.org/packages/ReactiveUI.WPF/) in this tutorial as we are developing a tiny WPF application that doesn't need code sharing.

Install-Package NuGet.Protocol

Expand Down Expand Up @@ -130,11 +130,11 @@ We also need a NuGet client library in this tutorial, and we are going to instal

The goal of the ReactiveUI syntax for read-write properties is to notify Observers that a property has changed. Otherwise we would not be able to know when it was changed.

In cases when we don't need to provide for two-way binding between the View and the ViewModel, we can use one of many ReactiveUI Helpers, to notify Observers of a changing read-only value in the ViewModel. We use the [ObservableAsPropertyHelper](docs/handbook/oaph/) twice, once to turn a generic IEnumerable<T> into an observable read-only collection, and then to change the visibility of an indicator to show that a request is currently executing.
In cases when we don't need to provide for two-way binding between the View and the ViewModel, we can use one of many ReactiveUI Helpers, to notify Observers of a changing read-only value in the ViewModel. We use the [ObservableAsPropertyHelper](~/docs/handbook/observable-as-property-helper/index.md) twice, once to turn a generic IEnumerable<T> into an observable read-only collection, and then to change the visibility of an indicator to show that a request is currently executing.

This also works in the opposite direction, when we take the `SearchTerm` property and [turn it into an observable](docs/handbook/when-any). This means that we are notified every time a change occurs in the UI. Using Reactive Extensions, we then [throttle](https://reactivex.io/documentation/operators/debounce.html) those events, and ensure that the search occurs no sooner than 800ms after the last keystroke. And if at that point the user did not change the last value, or if the search term is blank, we ignore the event completely. We have another ObservableAsPropertyHelper property `IsAvailable` which is generated by determining if our current SearchResults is null.
This also works in the opposite direction, when we take the `SearchTerm` property and [turn it into an observable](~/docs/handbook/when-any/index.md). This means that we are notified every time a change occurs in the UI. Using Reactive Extensions, we then [throttle](https://reactivex.io/documentation/operators/debounce.html) those events, and ensure that the search occurs no sooner than 800ms after the last keystroke. And if at that point the user did not change the last value, or if the search term is blank, we ignore the event completely. We have another ObservableAsPropertyHelper property `IsAvailable` which is generated by determining if our current SearchResults is null.

Let's now create a `NugetDetailsViewModel.cs` class that will wrap our NuGet metadata into a more usable class for our View. It includes a [ReactiveCommand](docs/handbook/commands) for opening the NuGet Repository URL.
Let's now create a `NugetDetailsViewModel.cs` class that will wrap our NuGet metadata into a more usable class for our View. It includes a [ReactiveCommand](~/docs/handbook/commands/index.md) for opening the NuGet Repository URL.

// This class wraps our NuGet model object into a ViewModel and allows
// us to have a ReactiveCommand to open the NuGet package URL.
Expand Down Expand Up @@ -170,7 +170,7 @@ Let's now create a `NugetDetailsViewModel.cs` class that will wrap our NuGet met

## 4. Create Views

ReactiveUI allows you to create views using two different approaches. The recommended approach is using [type-safe ReactiveUI bindings](https://reactiveui.net/docs/handbook/data-binding/) that can save you from memory leaks and runtime errors. The second approach is using XAML markup bindings.
ReactiveUI allows you to create views using two different approaches. The recommended approach is using [type-safe ReactiveUI bindings](~/docs/handbook/data-binding/index.md) that can save you from memory leaks and runtime errors. The second approach is using XAML markup bindings.

<details open><summary>Create Views using ReactiveUI type-safe bindings (recommended)</summary>

Expand Down Expand Up @@ -222,7 +222,7 @@ We need to derive the MainWindow from `IViewFor<T>`, so we use `ReactiveWindow<T

> Note If there is no reactive base class for your view control that can suite you, simply implement the IViewFor<TViewModel> interface by hand. Remember to store the ViewModel in a DependencyProperty or in a BindableProperty. See Data Binding for platform-specific examples.
We are going to use [ReactiveUI Binding](docs/handbook/data-binding/) to bind our ViewModel to our View. Reactive binding is a cross platform way of consistently binding properties on your ViewModel to controls on your View. The ReactiveUI binding has a few advantages over the XAML based binding. The first advantage is that property name changes will generate a compile error rather than runtime errors.
We are going to use [ReactiveUI Binding](~/docs/handbook/data-binding/index.md) to bind our ViewModel to our View. Reactive binding is a cross platform way of consistently binding properties on your ViewModel to controls on your View. The ReactiveUI binding has a few advantages over the XAML based binding. The first advantage is that property name changes will generate a compile error rather than runtime errors.

// MainWindow class derives off ReactiveWindow which implements the IViewFor<TViewModel>
// interface using a WPF DependencyProperty. We need this to use WhenActivated extension
Expand Down Expand Up @@ -335,13 +335,13 @@ This view will automatically get displayed in the ListBox in the MainWindow. Whe

Now you can search repositories on NuGet using your own app!

<img src="./demo-app.jpg" width="600" alt="demo app"/>
<img src="~/images/demo-app.jpg" width="600" alt="demo app"/>
<br />

</details>
<details><summary>Create Views using traditional XAML markup bindings</summary>

If you would like to use XAML bindings (remember, they don't guarantee type-safety and don't provide tools for memory management, such as [WhenActivated](https://reactiveui.net/docs/handbook/when-activated/), but ReactiveUI bindings do), then this tutorial is for you.
If you would like to use XAML bindings (remember, they don't guarantee type-safety and don't provide tools for memory management, such as [WhenActivated](~/docs/handbook/when-activated/index.md), but ReactiveUI bindings do), then this tutorial is for you.

The first thing you need to do is creating a converter, while we have a boolean property AppViewModel.IsAvailable indicating if our ViewModel has content loaded. Let's create a new class `BoolToVisibilityConverter.cs`.

Expand Down Expand Up @@ -460,7 +460,7 @@ Finally, we need to create XAML markup for our app.

Now you can search repositories on NuGet using your own app!

<img src="./demo-app.jpg" width="600" alt="demo app"/>
<img src="~/images/demo-app.jpg" width="600" alt="demo app"/>
<br />

</details>
Expand Down
24 changes: 12 additions & 12 deletions reactiveui/docs/getting-started/index.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@

ReactiveUI gives you the power to build reactive, testable, and composable UI code using the MVVM pattern.

See our <a href="docs/handbook/">Handbook</a> for the ReactiveUI documentation. We also have a complete <a href="https://github.com/reactiveui/ReactiveUI/tree/main/integrationtests">cross-platform demo app</a>.
See our <a href="~/docs/handbook/index.md">Handbook</a> for the ReactiveUI documentation. We also have a complete <a href="https://github.com/reactiveui/ReactiveUI/tree/main/integrationtests">cross-platform demo app</a>.

## Getting Started

To get started visit our <a href="docs/getting-started/installation/">Installation</a> page.
To get started visit our <a href="~/docs/getting-started/installation/index.md">Installation</a> page.

The [Compelling Example](docs/getting-started/compelling-example) walks through creating a more complete application, demonstrating the power of ReactiveUI and Reactive Extensions.
The [Compelling Example](compelling-example.md) walks through creating a more complete application, demonstrating the power of ReactiveUI and Reactive Extensions.

## Why MVVM?

The Model-View-ViewModel (MVVM) pattern helps create more portable and maintainable codebases for cross-platform .Net applications. It increases the amount of code that can be shared between different platforms (iOS, Android, etc.) and makes testing easier.

ReactiveUI makes it easy to combine the MVVM pattern with Reactive Programming by providing features such as:

- [WhenAnyValue](docs/handbook/when-any/)
- [ReactiveCommand](docs/handbook/commands/)
- [ObservableAsPropertyHelper](docs/handbook/observable-as-property-helper/)
- [WhenActivated](docs/handbook/when-activated/)
- [Data Binding](docs/handbook/data-binding/)
- [WhenAnyValue](~/docs/handbook/when-any/index.md)
- [ReactiveCommand](~/docs/handbook/commands/index.md)
- [ObservableAsPropertyHelper](~/docs/handbook/observable-as-property-helper/index.md)
- [WhenActivated](~/docs/handbook/when-activated/index.md)
- [Data Binding](~/docs/handbook/data-binding/index.md)

<img src="./mvvm.png" width="500" alt="mvvm">
<img src="~/images/mvvm.png" width="500" alt="mvvm">

## Explore ReactiveUI

Expand All @@ -30,6 +30,6 @@ ReactiveUI is much more than just a MVVM helper. Take a look at the following pr
- [DynamicData](https://github.com/reactivemarbles/DynamicData) - Reactive collections based on reactive extensions
- [ObservableEvents](https://github.com/reactivemarbles/ObservableEvents) - Build Observables from Events
- [Sextant](https://github.com/reactiveui/Sextant)- Navigation library for Xamarin.Forms using ReactiveUI
- [Samples](docs/resources/samples/) - Open Source applications built with ReactiveUI
- [Blog](articles/) - Release Notes and Announcements
- [Videos and Presentations](docs/resources/videos) - Videos and Presentations
- [Samples](~/docs/resources/samples.md) - Open Source applications built with ReactiveUI
- [Blog](~/articles/2020-07-16-article-on-elevated-values.md) - Release Notes and Announcements
- [Videos and Presentations](~/docs/resources/videos.md) - Videos and Presentations
30 changes: 15 additions & 15 deletions reactiveui/docs/getting-started/installation/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,23 +31,23 @@ ReactiveUI packages are now signed by the dotnet foundation. Only builds from th

[Core]: https://www.nuget.org/packages/ReactiveUI/
[CoreBadge]: https://img.shields.io/nuget/v/ReactiveUI.svg
[CoreDoc]: docs/getting-started/installation/
[CoreDoc]: ~/docs/getting-started/installation/index.md

[Fody]: https://www.nuget.org/packages/ReactiveUI.Fody/
[FodyBadge]: https://img.shields.io/nuget/v/ReactiveUI.Fody.svg
[FodyDoc]: docs/handbook/view-models/boilerplate-code
[FodyDoc]: ~/docs/handbook/view-models/boilerplate-code.md

[Test]: https://www.nuget.org/packages/ReactiveUI.Testing/
[TestBadge]: https://img.shields.io/nuget/v/ReactiveUI.Testing.svg
[TestDoc]: docs/handbook/testing/
[TestDoc]: ~/docs/handbook/testing/index.md

[Wpf]: https://www.nuget.org/packages/ReactiveUI.WPF/
[WpfBadge]: https://img.shields.io/nuget/v/ReactiveUI.WPF.svg
[WpfDoc]: docs/getting-started/installation/windows-presentation-foundation
[WpfDoc]: ~/docs/getting-started/installation/windows-presentation-foundation.md

[WinUi]: https://www.nuget.org/packages/ReactiveUI.WinUI/
[WinUiBadge]: https://img.shields.io/nuget/v/ReactiveUI.WinUI.svg
[WinUiDoc]: docs/getting-started/installation/universal-windows-platform
[WinUiDoc]: ~/docs/getting-started/installation/winui.md

[Maui]: https://www.nuget.org/packages/ReactiveUI.Maui/
[MauiBadge]: https://img.shields.io/nuget/v/ReactiveUI.Maui.svg
Expand All @@ -56,21 +56,21 @@ ReactiveUI packages are now signed by the dotnet foundation. Only builds from th
[Win]: https://www.nuget.org/packages/ReactiveUI.WinForms/
[WinEvents]: https://www.nuget.org/packages/ReactiveUI.Events.WinForms/
[WinBadge]: https://img.shields.io/nuget/v/ReactiveUI.WinForms.svg
[WinDoc]: docs/getting-started/installation/windows-forms
[WinDoc]: ~/docs/getting-started/installation/windows-forms.md

[Xam]: https://www.nuget.org/packages/ReactiveUI.XamForms/
[XamEvents]: https://www.nuget.org/packages/ReactiveUI.Events.XamForms/
[XamBadge]: https://img.shields.io/nuget/v/ReactiveUI.XamForms.svg
[XamDoc]: docs/getting-started/installation/xamarin-forms
[XamDoc]: ~/docs/getting-started/installation/xamarin-forms.md

[Dro]: https://www.nuget.org/packages/ReactiveUI.AndroidSupport/
[DroBadge]: https://img.shields.io/nuget/v/ReactiveUI.AndroidSupport.svg
[DroDoc]: docs/getting-started/installation/xamarin-android
[DroDoc]: ~/docs/getting-started/installation/xamarin-android.md

[DroX]: https://www.nuget.org/packages/ReactiveUI.AndroidX/
[DroXBadge]: https://img.shields.io/nuget/v/ReactiveUI.AndroidX.svg

[MacDoc]: docs/getting-started/installation/xamarin-mac
[IosDoc]: docs/getting-started/installation/xamarin-ios
[MacDoc]: ~/docs/getting-started/installation/xamarin-mac.md
[IosDoc]: ~/docs/getting-started/installation/xamarin-ios.md

[Uno]: https://www.nuget.org/packages/ReactiveUI.Uno/
[UnoBadge]: https://img.shields.io/nuget/v/ReactiveUI.Uno.svg
Expand All @@ -81,16 +81,16 @@ ReactiveUI packages are now signed by the dotnet foundation. Only builds from th

[Blaz]: https://www.nuget.org/packages/ReactiveUI.Blazor/
[BlazBadge]: https://img.shields.io/nuget/v/ReactiveUI.Blazor.svg
[BlazDoc]: docs/getting-started/installation/blazor
[BlazDoc]: ~/docs/getting-started/installation/blazor.md

[Ava]: https://www.nuget.org/packages/Avalonia.ReactiveUI/
[AvaBadge]: https://img.shields.io/nuget/v/Avalonia.ReactiveUI.svg
[AvaDoc]: docs/getting-started/installation/avalonia
[EventsDocs]: docs/handbook/events/
[AvaDoc]: ~/docs/getting-started/installation/avalonia.md
[EventsDocs]: ~/docs/handbook/events/index.md

[ValCore]: https://www.nuget.org/packages/ReactiveUI.Validation/
[ValBadge]: https://img.shields.io/nuget/v/ReactiveUI.Validation.svg
[ValDocs]: docs/handbook/user-input-validation/
[ValDocs]: ~/docs/handbook/user-input-validation/index.md

> **Note** ReactiveUI has packages for older .NET versions. Those packages are unlisted from NuGet and not supported, but you can still use them at your own risk to have ReactiveUI running on good old devices, such as Lumias, Surface Hubs, Windows XP, etc. See [Delisting of versions before 8.0.0 from NuGet](https://reactiveui.net/blog/2018/05/delisting-of-versions-before-8-0-0-from-nuget) blog post for more info.
Expand Down
2 changes: 1 addition & 1 deletion reactiveui/docs/getting-started/installation/tizen.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ Order: 80
## Package Installation

* [ReactiveUI github pull request](https://github.com/reactiveui/ReactiveUI/pull/1387)
* [Tizen platform](docs/guidelines/platform/tizen)
* [Tizen platform](~/docs/guidelines/platform/tizen.md)
2 changes: 1 addition & 1 deletion reactiveui/docs/guidelines/debugging/debug-symbols.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ We use [SourceLink](https://docs.microsoft.com/en-us/dotnet/standard/library-gui

The only requirement is to ensure the check the `Enable source link support` under `Debugging` in Visual Studio preferences as shown below:

![Configure Visual Studio as follows](sourcelink-howto.png)
![Configure Visual Studio as follows](~/images/sourcelink-howto.png)

<div class="youtube-video-container"><iframe src="https://www.youtube.com/embed/gyRGhCQPkB4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ this.WhenActivated(
});
```

See also [when activated](docs/handbook/when-activated/)
See also [when activated](~/docs/handbook/when-activated/index.md)


Not _all_ subscriptions need to be disposed. It's like events. If a component exposes an event and also subscribes to it itself, it doesn't need to unsubscribe. That's because the subscription is manifested as the component having a reference to itself. Same is true with Rx. If you're a VM and you e.g. `WhenAnyValue` against your own property, there's no need to clean that up because that is manifested as the VM having a reference to itself.
Loading

0 comments on commit 7ac1256

Please sign in to comment.