我在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
复制相似问题