Class ReactiveUserControl<TViewModel>
- Namespace
- ReactiveUI
- Assembly
- ReactiveUI.Wpf.dll
A UserControl that is reactive.
public class ReactiveUserControl<TViewModel> : UserControl, IAnimatable, IFrameworkInputElement, IInputElement, ISupportInitialize, IQueryAmbient, IAddChild, IViewFor<TViewModel>, IViewFor, IActivatableView where TViewModel : class
Type Parameters
TViewModel
The type of the view model backing the view.
- Inheritance
-
ReactiveUserControl<TViewModel>
- Implements
-
IViewFor<TViewModel>
- Inherited Members
- Extension Methods
Remarks
This class is a UserControl that is also reactive. That is, it implements IViewFor<T>. You can extend this class to get an implementation of IViewFor<T> rather than writing one yourself.
Note that the XAML for your control must specify the same base class, including the generic argument you provide for your view
model. To do this, use the TypeArguments
attribute as follows:
<rxui:ReactiveUserControl
x:Class="Foo.Bar.Views.YourView"
x:TypeArguments="vms:YourViewModel"
xmlns:rxui="http://reactiveui.net"
xmlns:vms="clr-namespace:Foo.Bar.ViewModels"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d">
<!-- view XAML here -->
</rxui:ReactiveUserControl>
Note that UWP and WinUI projects do not support the TypeArguments
attribute. The XAML designer window in WPF projects also does not
support generic types. To use ReactiveUserControl<TViewModel> in XAML documents you need to create a base class
where you derive from ReactiveUserControl<TViewModel> with the type argument filled in.
internal class YourViewBase : ReactiveUserControl<YourViewModel> { /* No code needed here */ }
public partial class YourView : YourViewBase
{
/* Your code */
}
Then you can use this base class as root in your XAML document.
<views:YourViewBase
x:Class="Foo.Bar.Views.YourView"
xmlns:rxui="http://reactiveui.net"
xmlns:vms="clr-namespace:Foo.Bar.ViewModels"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d">
<!-- view XAML here -->
</views:YourViewBase>
Constructors
ReactiveUserControl()
public ReactiveUserControl()
Fields
ViewModelProperty
The view model dependency property.
public static readonly DependencyProperty ViewModelProperty
Field Value
- DependencyProperty
Properties
BindingRoot
Gets the binding root view model.
public TViewModel? BindingRoot { get; }
Property Value
- TViewModel
ViewModel
Gets or sets the ViewModel corresponding to this specific View. This should be a DependencyProperty if you're using XAML.
public TViewModel? ViewModel { get; set; }
Property Value
- TViewModel