Ich habe Probleme mit benutzerdefinierten Schriftarten in meiner Windows Phone 8.1 MVVM-App.Benutzerdefinierte Schriftarten können zur Laufzeit nicht angezeigt werden - Windows Phone 8.1 MVVM - FontAwesome
Ich benutze FontAwesome Symbole. Ich habe die FontAwesome-Schriftartdatei in mein Projekt eingefügt. Wenn ich ein statisches Steuerelement wie dieses setze, funktioniert es perfekt;
<TextBlock x:Name="txtTest" Grid.Row="3" Text="" Foreground="Black" FontSize="20" FontFamily="/Assets/Fonts/FontAwesome.ttf#FontAwesome"/>
Aber was ich brauche ist, dass dies dynamisch funktioniert. Ich habe ein Hub-Steuerelement auf der Hauptseite der App, mit ListViews in jedem Hub-Bereich. Diese sind an eine Sammlung von benutzerdefinierten Objekten gebunden, die aus einer API-Antwort stammen. Beim Erstellen der Auflistung von Objekten sucht der Code nach einer Markierung in der Antwort und legt das FontAwesome-Symbol abhängig vom Marker dynamisch fest.
Hub Abschnitt Code:
<HubSection x:Uid="hubApproved" Header="Approved"
DataContext="{Binding MyObjects.Approved}"
d:DataContext="{Binding MyObjects.Approved}"
HeaderTemplate="{ThemeResource HubSectionHeaderTemplate}" >
<DataTemplate>
<ListView
ItemsSource="{Binding}"
ItemTemplate="{ThemeResource ApprovedTemplate}"
IsItemClickEnabled="True"
ItemClick="ListView_ItemClick"
ContinuumNavigationTransitionInfo.ExitElementContainer="True">
</ListView>
</DataTemplate>
</HubSection>
Und hier ist die genehmigte Vorlage, die an diese bindet:
<DataTemplate x:Key="ApprovedTemplate">
<StackPanel Margin="0,0,0,19" Background="{x:Null}" >
<TextBlock FontFamily="/Assets/Fonts/FontAwesome.ttf#FontAwesome" Text="{Binding Icon}" Foreground="Black" />
<TextBlock Text="{Binding SupplierName}" Style="{ThemeResource ListViewItemTripNameTextBlockStyle}" />
<TextBlock Style="{ThemeResource ListViewItemSubheaderTextBlockStyle}" Text="{Binding StartDate}"></TextBlock>
</StackPanel>
</DataTemplate>
Die Vorlage enthält einen Textblock, die an die Eigenschaft Symbol meines Objekt bindet. Dies soll dann das entsprechende FontAwesome Symbol angezeigt werden, sondern zeigt nur die Unicode des Symbols:
Ich habe versucht, die Definition der Schriftfamilie der Hub Steuerung aus dem Code hinter in der Ansicht, aber es hat keine Wirkung:
Hub.FontFamily = new FontFamily("ms-appx:///Assets/Fonts/FontAwesome.otf#FontAwesome");
Irgendwelche Ideen, wie man diese Ikonen dynamisch zur Anzeige bringt ...? Dank
Leider hat das nicht funktioniert. Es zeigt nur noch den Unicode. Wenn ich den Text als Unicode einstelle, funktioniert es. Aber es ist das {Bindungssymbol}, das es vermasselt. Fast so, als wäre die Schriftart geladen, nachdem das Steuerelement erstellt wurde – odinel