Content Views: Boxes and List Layouts
Written By launchbox
Last updated About 1 month ago
LaunchBox has two main Desktop content views:
BoxesContentView.xaml ListContentView.xamlThese are the views shown inside the main content region of MainView.xaml. The active one depends on whether the user is browsing in image/grid view or list view.
BoxesContentView.xaml is used for the visual box/grid browsing experience.
ListContentView.xaml is used for the table-style metadata list.
Shared Content View Behavior
Both content views inherit from the same content view model base, so they share several important bindings:
Both views also handle selection changes and right-click behavior through LaunchBox's built-in view models. Theme developers should preserve the main item control name:
x:Name="Items"BoxesContentView
BoxesContentView.xaml controls the image/grid browsing view.
It uses a ListView with a virtualized tile panel:
<next:VirtualizingTilePanel ChildSize="{Binding BoxChildSize}" />This is important for performance. Large LaunchBox libraries can contain thousands of games, so the default view virtualizes item layout instead of creating every visual element at once.
Theme developers can customize the item template heavily, but should be careful when replacing the virtualized panel.
Box Item Bindings
Each item in BoxesContentView.xaml is usually a BoxItemViewModel.
Common item bindings include:
The default view also uses bindings for margins, padding, text alignment, outlines, shadows, hover icons, and dynamic image sizing. Many of these are driven by LaunchBox visual settings.
Image and Text Fallbacks
Box items can show either image-based content or text-only content.
When a game image is missing, the item can show text using:
BoxTextOnlyVisibility Title DescriptionWhen an image exists, the item can show:
ContentImage Title Description BadgesThis is why a good box view should be tested with games that have complete images and games that are missing box art.
Badges in Box View
BoxesContentView.xaml displays badges through the item's Badges collection.
Each badge exposes information like:
Icon NameThe default theme displays badge icons in a horizontal list and uses the badge name as tooltip text.
If your theme uses badges, keep them small and avoid making them resize the main box item unexpectedly.
Separators
When the library is sorted or grouped, LaunchBox can insert separator items.
Separators use bindings like:
IsSeparator SeparatorVisibility SortType SortValueA separator might display something like:
Platform: Nintendo Entertainment System Genre: Platformer Year: 1994If you customize the box item template, make sure separator items still have a usable layout.
ListContentView
ListContentView.xaml controls LaunchBox's table-style game list.
It uses a DataGrid named:
<DataGrid Name="Items" />This view is built around rows, columns, sorting, column resizing, and metadata-heavy browsing.
The default list view includes columns for common game fields such as:
Title Platform Developer Publisher Release Date Rating Genres Series Region Play Mode Version Status Source Last Played Date Added Date Modified Play Count Favorite Progress Broken Portable Hidden Star Rating Community Star Rating Alternate Names Installed Application Path LaunchBox Database ID Wikipedia URL Video URL Play Time BadgesList Item Bindings
Each row in ListContentView.xaml is usually a ListItemViewModel.
Common row bindings include:
Several date columns also have sort value bindings, such as ReleaseDateSortValue, LastPlayedSortValue, DateAddedSortValue, and DateModifiedSortValue.
Headers and Labels
ListContentView.xaml uses label bindings from ListContentViewModel for column headers.
Examples:
TitleLabel PlatformLabel DevelopersLabel PublishersLabel ReleaseDateLabel GenresLabel PlayCountLabel InstalledLabel ApplicationPathLabel PlayTimeLabelThis lets LaunchBox provide the correct display text instead of hard-coding column names directly into the view.
Choosing What to Customize
Customize BoxesContentView.xaml when you want to change:
box art layout
grid spacing
selected item styling
text overlays
missing-image fallback
badge placement
separator styling
hover animation
Customize ListContentView.xaml when you want to change:
row styling
column styling
header styling
metadata columns
selection styling
scrollbars
table spacing
What to Be Careful With
For BoxesContentView.xaml, be careful with virtualization. Replacing the virtualized tile panel can hurt performance in large libraries.
For ListContentView.xaml, be careful with the DataGrid name, column bindings, sort member paths, and selection behavior.
For both views, preserve:
Items CollectionVisibility NoResultsVisibility NoResultsLabel ScrollBarVisibility SelectionChanged behavior Right-click behaviorRelated Articles
In Short
BoxesContentView.xaml controls the visual box/grid browsing experience, while ListContentView.xaml controls the metadata-heavy table view. Both views are loaded into the main content region of MainView.xaml, both bind to the active game collection, and both should preserve LaunchBox's selection, scrolling, empty-state, and item binding behavior.