我在AvaloniaUI中有一个ComboBox,我想根据另一个类的数组提供的名称动态加载列表。例如,使用以下代码:
<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时,该函数似乎不存在。
发布于 2021-01-03 22:23:16
在上面的@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变量作为数组似乎不起作用,所以我不得不将其改为list,还必须将Note类更改为使用{ get; set; }。
https://stackoverflow.com/questions/65326248
复制相似问题