ModularContent.axaml代码
<Window xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Height="362" Width="516" x:Class="AvaloniaUI.ModularContent" Title="ModularContent"> <ScrollViewer> <StackPanel> <WrapPanel Background="LightSteelBlue" Name="pnlList"> <CheckBox Margin="5" IsChecked="True">Panel1</CheckBox> <CheckBox Margin="5" IsChecked="True">Panel2</CheckBox> <CheckBox Margin="5" IsChecked="True">Panel3</CheckBox> <CheckBox Margin="5" IsChecked="True">Panel4</CheckBox> </WrapPanel> <WrapPanel> <StackPanel Name="Panel1" > <Border Padding="5" BorderBrush="Yellow" BorderThickness="2"> <UniformGrid Rows="2" Columns="2"> <Button Margin="10" Padding="10">1</Button> <Button Margin="10" Padding="10">2</Button> <Button Margin="10" Padding="10">3</Button> <Button Margin="10" Padding="10">4</Button> </UniformGrid> </Border> </StackPanel> <StackPanel Name="Panel2"> <Border Padding="15" BorderBrush="Yellow" BorderThickness="2"> <TabControl> <TabItem Header="Page1"> <Button Padding="100,50,100,50">Tabs</Button> </TabItem> <TabItem Header="Page2"> </TabItem> </TabControl> </Border> </StackPanel> <StackPanel Name="Panel3"> <Border Padding="15" BorderBrush="Yellow" BorderThickness="2"> <StackPanel> <TextBox MinLines="5" MaxWidth="150" TextWrapping="Wrap">This is a test of a text box that contains wrapped text.</TextBox> <StackPanel Orientation="Horizontal"> <Button>OK</Button> <Button>Cancel</Button> </StackPanel> </StackPanel> </Border> </StackPanel> <StackPanel Name="Panel4"> <Border Padding="15" BorderBrush="Yellow" BorderThickness="2"> <UniformGrid Rows="2" Columns="2"> <Button Margin="10" Padding="10">1</Button> <Button Margin="10" Padding="10">2</Button> <Button Margin="10" Padding="10">3</Button> <Button Margin="10" Padding="10">4</Button> </UniformGrid> </Border> </StackPanel> </WrapPanel> </StackPanel> </ScrollViewer> </Window>
ModularContent.axaml.cs代码
using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
namespace AvaloniaUI;
public partial class ModularContent : Window
{
public ModularContent()
{
InitializeComponent();
// 查找所有子控件,注册事件
foreach (var control in pnlList.Children)
{
if (control is CheckBox chk)
{
chk.Checked += chk_Checked;
chk.Unchecked += chk_Unchecked;
}
}
}
private void chk_Checked(object? sender, RoutedEventArgs e)
{
CheckBox chk = (CheckBox)e.Source!;
Control obj = this.FindControl<Control>((string)chk.Content!)!;
obj.IsVisible = true;
}
private void chk_Unchecked(object? sender, RoutedEventArgs e)
{
CheckBox chk = (CheckBox)e.Source!;
Control obj = this.FindControl<Control>((string)chk.Content!)!;
obj.IsVisible = false;
}
}
运行效果

浙公网安备 33010602011771号