Avalonia怎么在XAML中使用枚举类型 Avalonia绑定枚举教程

admin 百科 12
在XAML中使用枚举需先声明命名空间xmlns:core="using:MyApp.Core",再通过{core:ConnectionState.Value}引用;绑定RadioButton需配合EnumToBoolConverter及ConverterParameter;枚举列表可用ObjectDataProvider调用GetValues提供;ViewModel属性须实现INotifyPropertyChanged。

Avalonia怎么在XAML中使用枚举类型 Avalonia绑定枚举教程-第1张图片-佛山资讯网

在XAML中声明并引用枚举类型

要在XAML里使用枚举,必须先引入其所在命名空间。假设你有一个枚举定义在 MyApp.Core 命名空间下:

namespace MyApp.Core
{
    public enum ConnectionState
    {
        Disconnected,
        Connecting,
        Connected,
        Failed
    }
}

登录后复制

那么在AXAML文件顶部添加对应 xmlns 声明:

xmlns:core="using:MyApp.Core"

登录后复制

之后就能在资源、绑定或属性中直接引用该枚举,例如:

<TextBlock Text="{Binding Status, Converter={StaticResource EnumToStringConverter}}" />
<RadioButton Content="已连接" IsChecked="{Binding Status, Converter={StaticResource EnumToBoolConverter}, ConverterParameter={core:ConnectionState.Connected}}" />

登录后复制

用ObjectDataProvider暴露枚举值列表

若需将枚举作为下拉项、单选按钮组的数据源(比如让多个 RadioButton 对应不同枚举值),推荐用 ObjectDataProvider 包装 Enum.GetValues

<Window.Resources>
  <ObjectDataProvider x:Key="ConnectionStates" 
                        ObjectType="{x:Type core:ConnectionState}" 
                        MethodName="GetValues">
    <ObjectDataProvider.MethodParameters>
      <x:Type TypeName="core:ConnectionState" />
    </ObjectDataProvider.MethodParameters>
  </ObjectDataProvider>
</Window.Resources>

登录后复制

然后绑定到 ListBox 或 ItemsControl:

<ListBox ItemsSource="{Binding Source={StaticResource ConnectionStates}}" 
         SelectedItem="{Binding CurrentState, Mode=TwoWay}" />

登录后复制

RadioButton 绑定枚举值的关键写法

直接绑定 IsChecked 到枚举属性时,Avalonia 不支持原生双向映射,必须借助转换器。常见错误如 “Unexpected token None” 就是因为没正确传入 ConverterParameter 或未注册命名空间。

标签: react app ai win

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~