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;
    }
}

运行效果

 

posted on 2025-07-11 14:34  dalgleish  阅读(26)  评论(0)    收藏  举报