2016-03-31 7 views
0

Ich verwende eine benutzerdefinierte Schriftart, um Symbole in meiner WPF-Anwendung anzuzeigen. Ich habe eine kleine Demo-Applikation geschrieben, um mir das Icon neben dem entsprechenden "Charakter" zu präsentieren.C# Benutzerdefinierte Font-Werte interpretiert als Zeichenfolge anstelle von Einzelwert

Leider interpretiert C# die resultierende Zeichenfolge meiner Iterationen nicht als einzelnes Zeichen, sondern als Zeichenfolge.

Der Code:

private string _BaseString = "&#xE"; 
     public IconsPane() 
     { 
      InitializeComponent(); 
      InitIcons(); 
     } 

     private void InitIcons() 
     { 

      string[] hex = new string[16] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; 

      string output = ""; 
      foreach (string a in hex) 
      { 
       foreach (string b in hex) 
       { 
        foreach (string c in hex) 
        { 
         output = a + b + c; 
         CreateIcon(output); 
        } 
       } 

      } 

     } 

     private void CreateIcon(string output) 
     { 
      StackPanel st = new StackPanel(); 
      st.Margin = new Thickness(5); 

      Button ILabel = new Button(); 
      ILabel.Style = (Style)FindResource("ContentButtonPlain"); 
      ILabel.Content = _BaseString + output + ";"; 

      TextBox IDesc = new TextBox(); 
      IDesc.Text = (string)ILabel.Content; 
      IDesc.HorizontalAlignment = HorizontalAlignment.Center; 

      st.Children.Add(ILabel); 
      st.Children.Add(IDesc); 

      IconDashboard.Children.Add(st); 

     } 

Ausgang: enter image description here

Stattdessen würde Ich mag jedes Symbol haben, die hinter dieser Zeichenfolge ist:

Erwartete Ausgabe:

enter image description here

Der Screenshot der erwarteten Ausgabe wird von XAML-Code in dem Designer genommen:

<Button Margin="5 0 5 0" 
                 Style="{StaticResource ContentButtonPlain}" 
                 Content="&#xE3e2;" /> 

In diesem Fall wird das Symbol in der richtigen Art und Weise erfaßt.

+1

In C# werden Unicode-Zeichen-Escape-Sequenzen als '\ uXXXX' anstelle von' & # xXXXX; 'geschrieben, das in XML/XAML verwendet wird. – Clemens

+0

Nun, du hast nicht wirklich geholfen. Weder tat (char) xxx Hilfe, ich muss in der Lage sein, & # xEXXX; und das Symbol selbst. Mein Hauptproblem ist zu verstehen, wie ich aus a + b + c den richtigen Charakter machen kann. – Richard

Antwort

0

Es scheint, dass Sie alle Symbole im Bereich E000 bis EFFF erstellen möchten. Man könnte es wie folgt tun:

foreach (char symbolChar in Enumerable.Range(0xE000, 0x1000)) 
{ 
    var symbolString = new string(symbolChar, 1); 

    // replace this by your actual code that creates UI elements 
    st.Children.Add(new Label { Content = symbolString }); 
} 

Abgesehen, dass Sie auf jeden Fall besser einen Itemscontrol mit einem geeigneten ItemTemplate verwenden die Symbole angezeigt werden, wie hier gezeigt: https://stackoverflow.com/a/34156141/1136211.

Verwandte Themen