我想检测一个目录中有多少个文件,然后使用该数字将相同数量的项目添加到ComboBox。但是,当我创建项目时,如何给每个项目取一个单独的名称? “添加”仅给该项目提供其内容,但我想给它一个x:Name。这是我到目前为止的内容:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
if (!File.Exists(@"C:\_Kooper Young FBLA\CIC=true.txt"))
{
int FileAmount = Directory.GetFiles(@"C:\_Kooper Young FBLA").Length;
for (int i = 1; i < FileAmount + 1; i++)
{
ComboBox.Items.Add();
}
}
File.Create(@"C:\_Kooper Young FBLA\CIC=true.txt");
}
答案 0 :(得分:-1)
希望我能正确理解您的问题。您可以尝试为文件创建模型,无论它们代表什么。我说PersonModel
,然后尝试ObservableCollection<PersonModel> People = new ObservableCollection<PersonModel>();
在PersonModel上,您将需要属性,以存储需要存储的有关Person之类的任何信息,例如Name
。
然后编写一个foreach循环,该循环查看目录中的每个项目,并为找到的每个项目创建一个PersonModel,并以某种方式设置Name
属性。
最后,但仍在循环中,执行People.Add(item);
在Xaml中,将组合框的ItemsSource属性绑定到People集合。将组合框的DisplayMemberPath设置为Name
。
答案 1 :(得分:-1)
就像您在WPF中一样,我最好建议您在ComboBox中使用Binding
。
这是创建类ComboItem的简单方法:
public class ComboItem
{
public string FileName { get; set; }
}
因此,在您的代码中,您只需执行以下操作:
public ObservableCollection<ComboItem> ComboFiles { get; }
= new ObservableCollection<ComboItem>();
foreach (var file in Directory.GetFiles(directoryName))
{
ComboFiles.Add(new ComboItem { FileName = file });
}
,因此您可以填充ComboBox的列表。 然后在您的xaml中,您可以像这样绑定到ObservableCollection:
<ComboBox Grid.Column="1" ItemsSource="{Binding Path=ComboFiles}"
SelectedItem="{Binding Path=SelectedFile}" DisplayMemberPath="FileName"/>
其中SelectedFile是ComboItem
对象。
当然答案不是“关键”,但对绑定进行一些研究,我相信您会很快到达的,我只能告诉您link