Если вы используете MVVM то вот вам мой код
В коде ViewModel основной формы сделайте обновляемое свойство:
[Reactive]
public bool ZipViewModelVisible { get; set; }
Затем вставьте нужный вам UserControl на форму и свяжите со свойством, у меня это: ZipViewModelVisible
После изменения значения свойства будет скрываться или показываться UserControl
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="using:AvaloniaImageCompress.ViewModels"
xmlns:view="using:AvaloniaImageCompress.Views"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:b="using:AvaloniaImageCompress.Behaviors"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
xmlns:idd="clr-namespace:Avalonia.Xaml.Interactions.DragAndDrop;assembly=Avalonia.Xaml.Interactions"
x:Class="AvaloniaImageCompress.Views.MainWindow"
Icon="/Assets/avalonia-logo.ico"
Title="AvaloniaImageCompress" >
<Design.DataContext>
<vm:MainWindowViewModel/>
</Design.DataContext>
<Grid Background="White" >
<view:ZipView
DataContext="{Binding ZipViewModel}" / Контекст данных
IsVisible="{Binding DataContext.ZipViewModelVisible, / привязка свойства к родительскому контексту данных
RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}"/>
</Grid>
</Window>
PS: Для обновления свойства используется ReactiveUI.Fody
Проект с которого был взят данный код
Ещё один проект с данным подходом