В моей программе wpf я хотел бы иметь вкладки, которые будут генерироваться из массива или списка. Я хотел бы редактировать файлы с каждой вкладкой. Каждая вкладка будет иметь соответствующую папку с одинаковым именем, поэтому все вкладки должны выглядеть одинаково (именно поэтому я использовал DataTemplates), поскольку все файлы во всех каталогах создаются с одинаковыми именами, но их содержимое отличается. У меня есть код, который генерирует вкладки из массива и добавляет имена к вкладкам.
public class MainWindowViewModel
{
public ObservableCollection<TabViewModel> Tabs { get; set; }
public MainWindowViewModel()
{
this.Tabs = new ObservableCollection<TabViewModel>();
var location = System.AppDomain.CurrentDomain.BaseDirectory.ToString();
string[] folderList = new string[] { "Folder1", "Folder2" };
foreach (string folder in folderList)
{
this.Tabs.Add(new TabViewModel(folder));
string newLocation = location + folder + "\\";//i would like to point tab to this directory
}
}
}
public class TabViewModel
{
public string Name { get; set; }
public TabViewModel(string name)
{
this.Name = name;
}
}
<TabControl ItemsSource="{Binding Tabs}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate >
<TextBox x:Name="fileTextBox"/>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
Но у меня есть 2 проблемы:
- Я помещаю текстовое поле в содержимое вкладки, и если я создаю более 1 вкладки, все они разделяют одно и то же содержимое в текстовом поле. , Мне нужно создать отдельный экземпляр для каждой вкладки.
- Когда вкладка будет создана, мне нужно будет назначить ей каталог (который я сохранил в строке newLocation), а затем отобразить файл (например, sample.txt) в текстовом поле ( fileTextBox).