如何使用 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; }
还有。
我在 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; }
还有。