WPF TabControl ContentTemplate List
Неопытный с WPF, поэтому мне нужно немного помочь. Оцените помощь заранее.
У меня есть следующий класс:
public class TabDefn
{
public TabDefn() { }
public TabDefn(string inFolderName, List<FilesFolder> inFilesFolders)
{
folderName = inFolderName;
FFs = inFilesFolders;
}
public string folderName { get; set; }
public List<FilesFolder> FFs {get; set;}
}
public class FilesFolder
{
public FilesFolder() {}
//public Image image { get; set; }
public string ffName { get; set; }
//public Image arrow { get; set; }
}
TabControl.ItemContent
работает нормально. Я ничего не могу показать TabControl.ContentTemplate
, Я перепробовал много вещей, но именно здесь сейчас находится WPF:
<TabControl Grid.Column="1" Grid.Row="1" Visibility="Hidden" Name="Actions">
<!-- This displays the tab heading perfectly.-->
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding folderName}" />
</DataTemplate>
</TabControl.ItemTemplate>
<!-- This is the content of the tab that I can't get anything to show up in.-->
<TabControl.ContentTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding FF}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding ffName}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
Мне все равно, если содержание меняется, поэтому мне не нужно INotifyPropertyChanged
или же ObservableCollection
, Однако, если мне придется поместить весь этот код, пусть будет так.
1 ответ
Решение
Вы заявляете FF
как поле, которое является недопустимым источником привязки. Вы должны преобразовать это в собственность
public List<FilesFolders> FF { get; set; }
и инициализировать его, например, в TabDefn
конструктор. Вы можете узнать больше о том, что является допустимым источником привязки на MSDN