Avalonia UserControl (用户控件)

ava中的用户控件和wpf中的作用一致
一般用来制作页面

新建一个页面

<UserControl
    ...
>
    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
        <TextBlock Text="这是一个用户控件" />
        <Button Name="btn1" Content="按钮" />
    </StackPanel>
</UserControl>

在页面的后台代码中根据名字获取控件

 var btn1 = this.FindControl<Button>("btn1");
 btn1.Click += (s, e) =>
 {
     btn1.Content = Guid.NewGuid().ToString();
 };

在主窗口中引用用户控件
using后跟上控件的命名空间

xmlns:local="using:AvaloniaApplication2"

 <Panel>
     <local:UserControl1 />
 </Panel>

2024.10.26 一些新发现

<!--  上面的 x:DataType 用于编译时绑定 -->
<!--  这里的 UserControl.DataContext 用于设计器和运行后指定vm -->
<!--  如果这里不指定 DataContext ,那么他会尝试寻找嵌套的父窗口的vm,会直接报错,因为vm类型不一致 -->
<!--  如果不在这里指定,那也要在后台代码里指定 -->
<Design.DataContext>
    <vm:UserControl1ViewModel />
</Design.DataContext>
posted @ 2024-01-19 19:29  trykle  阅读(525)  评论(0)    收藏  举报