Avalonia UI AutoCompeleteBox Binding Collection(User)

本文介绍了如何在Avalonia中使用AutoCompleteBox控件,并实现自定义过滤功能。通过绑定ViewModel,展示了如何根据用户输入筛选User集合。同时,详细解释了XAML文件和CS代码中的关键部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

.axaml File

<AutoCompleteBox Name="customFilterAutoCompleteBox" Items="{Binding MyItems}" Width="200" Text="{Binding Mode=OneWayToSource}" FilterMode="Custom">
   <AutoCompleteBox.Styles> 
     <Style Selector="ListBoxItem">
       <Setter Property="Background" Value="Red"/>
       <Setter Property="Template">
         <ControlTemplate TargetType="ListBoxItem">
           <Border>
             <TextBlock Text="{Binding Name}"/>
           </Border>
         </ControlTemplate>
       </Setter>
     </Style> 
   </AutoCompleteBox.Styles>
</AutoCompleteBox>

.axaml.cs 设置 AutoCompleteBox ItemFilter:

 this.Get<AutoCompleteBox>("customFilterAutoCompleteBox").ItemFilter = (string keyWord, object sender) =>
 {
     var user = sender as User;
     if (user != null && user.Name.ToLower().Contains(keyWord.ToLower()))
         return true;
     return false;
 };

ViewModel 和 Model:

public class MainWindowViewModel : ViewModelBase
{ 
   public string Greeting => "Welcome to Avalonia!";
   public ObservableCollection<User> MyItems => new ObservableCollection<User>()
   {
      new User(){MyProperty=true,Name="The First Name" },
      new User(){MyProperty=false,Name="The Last Name" },
      new User(){MyProperty=true,Name="333 First 222" },
      new User(){MyProperty=false,Name="222 Last 222" },
   };
   public MainWindowViewModel() {  } 
}
public class User : ViewModelBase
{
   private bool _myProperty;
   public bool MyProperty
   {
      get => _myProperty;
      set => this.RaiseAndSetIfChanged(ref _myProperty, value);
   }
   private string _name;
   public string Name
   {
      get => _name;
      set => this.RaiseAndSetIfChanged(ref _name, value);
   }
   public override string ToString()
   {
      return _name;
   }
}

若转载,请附上本文链接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值