少有人走的路

勇哥的工业自动化技术网站

Avalonia学习(五)数据绑定

数据绑定


image.png


App.axaml


注意如果没有写<FluentTheme/>,则这些Fluent控件将没有效果,比如滑块控件成了一个Lable控件,只显示文字了。

<Application xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             x:Class="_05_DataBinding.App">
    <Application.Styles>
        <!-- 官方标准 Fluent 主题 -->
        <FluentTheme/>
    </Application.Styles>
</Application>



MainWindow.axaml

<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="clr-namespace:_05_DataBinding"
        x:Class="_05_DataBinding.MainWindow"
        x:DataType="vm:MainWindowViewModel"
        Title="Data Binding - 数据绑定演示"
        Width="450"
        Height="450">
  <Window.DataContext>
    <vm:MainWindowViewModel/>
  </Window.DataContext>

  <ScrollViewer>
    <StackPanel Margin="30" Spacing="20">

      <TextBlock Text="数据绑定示例" FontSize="20" FontWeight="Bold"/>

      <Border Background="#F5F5F5" Padding="15" CornerRadius="8">
        <StackPanel Spacing="15">
          <StackPanel Spacing="5">
            <TextBlock Text="单向绑定(TextBox -> TextBlock)"/>
            <TextBox Text="{Binding UserName}" Watermark="输入用户名"/>
            <TextBlock Text="{Binding UserName}" FontSize="16" Foreground="#6200EE"/>
          </StackPanel>

          <StackPanel Spacing="5">
            <TextBlock Text="数字绑定(NumericUpDown)"/>
            <NumericUpDown Value="{Binding Age}"
                           Minimum="0"
                           Maximum="150"
                           Increment="1"/>
            <TextBlock Text="{Binding Age, StringFormat='年龄:{0}岁'}"/>
          </StackPanel>

          <StackPanel Spacing="5">
            <TextBlock Text="滑块绑定(Slider)"/>
            <Slider Value="{Binding SliderValue}"
                    Minimum="0"
                    Maximum="100"/>
            <TextBlock Text="{Binding SliderValue, StringFormat='值:{0:F1}'}"/>
          </StackPanel>

          <StackPanel Spacing="5">
            <TextBlock Text="状态消息"/>
            <TextBlock Text="{Binding StatusMessage}"
                       Foreground="#4CAF50"
                       FontWeight="Bold"/>
          </StackPanel>
        </StackPanel>
      </Border>

    </StackPanel>
  </ScrollViewer>
</Window>


MainWindow.axaml.cs

using Avalonia.Controls;

namespace _05_DataBinding;

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }
}


MainWindowViewModel.cs

这里使用了微软的CommunityToolkit mvvm框架,以绑定属性。

using CommunityToolkit.Mvvm.ComponentModel;

namespace _05_DataBinding;

public partial class MainWindowViewModel : ObservableObject
{
    [ObservableProperty]
    private string _userName = "张三";

    [ObservableProperty]
    private int _age = 25;

    [ObservableProperty]
    private string _statusMessage = "准备就绪";

    [ObservableProperty]
    private double _sliderValue = 50;
}


效果:

act5.gif


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2026年3月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接

Powered By Z-BlogPHP 1.7.3

Copyright www.skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864