如何使用 AvaloniaUI 在 ComboBox 中动态加载项目

How to dynamically load items in a ComboBox using AvaloniaUI

我在 AvaloniaUI 中有一个 ComboBox,我想根据另一个 class 的数组提供的名称动态加载列表。例如,采用以下代码:

<ComboBox Name="Select" SelectedIndex="0"></ComboBox>
public class MainWindow : Window
{
    private Note[] notes;
    public MainWindow()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
        notes = Utility.GetNotes();

        ComboBox comboBox = this.Find<ComboBox>("Select");
        foreach (Note n in notes)
        {
            comboBox.Items.Add(
                new ComboBoxItem()
                {
                    Content = n.Name
                }
            );
        }
    }
}
public class Note
{
    public string Name;
    public string NoteText;
}

我不确定在 AvaloniaUI 中执行此操作的正确方法,因为在 WPF 中您可以直接调用该 comboBox.Items.Add() 函数。但是使用AvaloniaUI时好像没有这个功能。

根据上面的 @kekekeks 评论,我可以通过一些更改来完成这项工作:

<ComboBox Name="Select">
    <ComboBox.ItemTemplate>
      <DataTemplate>
        <TextBlock Text="{Binding Name}" />
      </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>
public class MainWindow : Window
{
    private List<Note> Notes;
    public MainWindow()
    {
        InitializeComponent();
    }

    private void InitializeComponent()
    {
        AvaloniaXamlLoader.Load(this);
        Notes = Utility.GetNotes();
        ComboBox comboBox = this.Find<ComboBox>("Select");
        comboBox.Items = Notes;
        comboBox.SelectedIndex = 0;
    }
}
public class Note
{
    public string Name { get; set; }
    public string NoteText { get; set; }
}

我只想补充一点,将 Notes 变量作为数组似乎不起作用,所以我不得不将其更改为列表,并且我不得不更改 Note class 以使用 { get; set; } 还有。