Enum Converters
These converters transform enum values into user-friendly display elements like icons, badges, and localized strings for UI presentation.
GameTypeToIconConverter
- Namespace:
GenHub.Infrastructure.Converters
- Purpose: Converts
GameType
enum values into corresponding icon paths or resources - Supported Values:
GameType.CommandAndConquerGenerals
→ Generals iconGameType.CommandAndConquerGeneralsZeroHour
→ Zero Hour iconGameType.Custom
→ Custom game icon
- Return Type:
string
(icon path/resource key)
Icon Display
xml
<Image Source="{Binding GameType, Converter={StaticResource GameTypeToIconConverter}}" />
Icon with Fallback
xml
<Image Source="{Binding SelectedGame.GameType, Converter={StaticResource GameTypeToIconConverter}}"
FallbackSource="avares://GenHub/Assets/Icons/default-game.png" />
SourceTypeToBadgeConverters
- Namespace:
GenHub.Infrastructure.Converters
- Purpose: Converts
ContentType
enum values into badge text or background colors for UI indicators - Supported Types:
ContentType.GameClient
→ Amber background ("CAS" text)ContentType.Mod
→ Blue background ("Mod" text)- Other types → Green background (type name text)
- Return Types:
SourceTypeToBadgeBackgroundConverter
:SolidColorBrush
SourceTypeToBadgeTextConverter
:string
### Badge Display
xml
<Border Background="{Binding ContentType, Converter={StaticResource SourceTypeToBadgeBackgroundConverter}}"
CornerRadius="12" Padding="8,4">
<TextBlock Text="{Binding ContentType, Converter={StaticResource SourceTypeToBadgeTextConverter}}"
Foreground="White" FontSize="12" />
</Border>
Styled Badge
xml
<Border Background="{Binding ContentType, Converter={StaticResource SourceTypeToBadgeBackgroundConverter}}"
CornerRadius="8" Padding="6,2">
<TextBlock Text="{Binding ContentType, Converter={StaticResource SourceTypeToBadgeTextConverter}}"
Foreground="White" FontSize="11" />
</Border>
Usage Patterns
Game Selection UI
xml
<ItemsControl Items="{Binding AvailableGames}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Gray" BorderThickness="1" CornerRadius="4" Margin="4">
<StackPanel Orientation="Horizontal">
<Image Source="{Binding GameType, Converter={StaticResource GameTypeToIconConverter}}"
Width="32" Height="32" Margin="8" />
<StackPanel VerticalAlignment="Center">
<TextBlock Text="{Binding Name}" FontWeight="Bold" />
<TextBlock Text="{Binding ContentType, Converter={StaticResource SourceTypeToBadgeTextConverter}}"
FontSize="10" Opacity="0.7" />
</StackPanel>
</StackPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Profile Status Indicators
xml
<StackPanel Orientation="Horizontal">
<Border Background="{Binding Profile.ContentType, Converter={StaticResource SourceTypeToBadgeBackgroundConverter}}"
CornerRadius="8" Padding="6,2">
<TextBlock Text="{Binding Profile.ContentType, Converter={StaticResource SourceTypeToBadgeTextConverter}}"
Foreground="White" FontSize="11" />
</Border>
<Image Source="{Binding Profile.GameType, Converter={StaticResource GameTypeToIconConverter}}"
Width="24" Height="24" Margin="8,0" />
</StackPanel>
Real Usage Patterns
xml
<!-- Game type icons in profile cards -->
<Image Source="{Binding GameType, Converter={StaticResource GameTypeToIconConverter}}" />
<!-- Content type badges in content lists -->
<Border Background="{Binding ContentType, Converter={StaticResource SourceTypeToBadgeBackgroundConverter}}"
CornerRadius="4" Padding="4">
<TextBlock Text="{Binding ContentType, Converter={StaticResource SourceTypeToBadgeTextConverter}}" />
</Border>
Real Usage in Game Profile Scenarios
xml
<!-- Game type selection with icons -->
<ComboBox ItemsSource="{Binding AvailableGameTypes}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding ., Converter={StaticResource GameTypeToIconConverter}}" Width="16" Height="16" />
<TextBlock Text="{Binding .}" Margin="8,0,0,0" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<!-- Content type indicators -->
<ItemsControl ItemsSource="{Binding ContentItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Background="{Binding ContentType, Converter={StaticResource SourceTypeToBadgeBackgroundConverter}}"
CornerRadius="4" Padding="4">
<TextBlock Text="{Binding Title}" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>