2017-12-30 40 views
0



ich zur Zeit zu lernen, wie UWP Apps zu machen und so zu tun, ich mache eine Anwendung, die die Benutzer Notizen erstellen kann, die Kategorien von Notizen, etc ...
UWP - Icon Picker

Ich habe eine NavigationView, in der jede Kategorie aufgelistet wird, und wenn der Benutzer auf eine bestimmte Kategorie klickt, erscheint etwas (ich weiß noch nicht was) mit einer Liste aller Notizen.

Ich möchte, dass jede Kategorie ein Symbol hat. Wenn der Bereich der NavigationView geschlossen ist, kann der Benutzer immer noch auf eine Kategorie klicken.

Mein Problem ist folgendes:

Wenn der Benutzer eine neue Kategorie schafft, ich ihm die Wahl des Symbols durch eine combobox (oder etwas wirkt, um das gleiche) mit allen möglichen Symbolen geben wollen in es.

  • Ist es möglich, Symbole in einer Combobox zu platzieren?
  • Wie kann ich dieselben Symbole wie für ein NavigationViewItem erhalten, um sie als Elementquelle für meine Combobox zu verwenden?

EDIT:

Hier ist, was ich getan habe: Ich habe eine ItemTemplate meiner Combobox, die SymbolIcon Komponente:

<ComboBox x:Name="iconpicker"> 
     <ComboBox.ItemTemplate> 
      <DataTemplate> 
       <SymbolIcon Symbol="{Binding symbol}" /> 
      </DataTemplate> 
     </ComboBox.ItemTemplate> 
</ComboBox> 

Ich habe auch eine einfache Klasse:

public class ComboSymbol 
{ 
    public Symbol symbol; 
} 

Und hier ist mein Code, um die Combobox zu füllen:

ObservableCollection<ComboSymbol> images = new ObservableCollection<ComboSymbol>(); 
iconpicker.ItemsSource = images; 
images.Add(new ComboSymbol { symbol = Symbol.Accept }); 

Und .. es funktioniert fast.
Picture of the combobox item

Wie Sie sehen können, ist das Symbol nicht das, das ich wählte. Und egal welches Symbol ich auswähle (in code-behind), es gibt immer dieses Emoji.

EDIT 2:
Ich war auf der Suche, wo ich etwas falsch gemacht haben, und anscheinend ist es über meine Bindung. Es gibt ein Standardsymbol für die SymbolIcon-Komponente (Ich habe gerade ein SymbolIcon erstellt, ohne das gewünschte Symbol zu nennen, und dieses Emoji ist wieder aufgetaucht, also denke ich, dass meine Bindung nicht gut ist und ich das gewünschte Symbol nicht finden kann. Das Programm hat das Standard-Icon benutzt.

Finale edit:
Hier war das Problem: Ich habe vergessen zu einfach das "{get; set;}" nach den Mitgliedern Erklärung in meiner Klasse. Es funktioniert jetzt!

public Symbol symbol { get; set; } // Fix 
+0

können Sie diese Antwort bevorzugen https://social.msdn.microsoft.com/Forums/vstudio/en-US/928a83b5-09ad-4553-9bc3-45c6dd91a419/add-a-image-to-comboboxitem?forum= wpf –

+0

@ shubham-sahu danke! Ich bin fast fertig. Ich habe eine Klasse mit nur einem Mitglied (das Icon als BitmapImage). Ich versuche, ein Windows.UI.Xaml.Symbol-Element als BitmapImage zu konvertieren, aber ich weiß nicht, wie es geht, haben Sie eine Idee? – christophechichmanian

+0

@christophechichmanian Bitte posten Sie eine [mcve], um für uns zu zeigen, was Sie getan haben. –

Antwort

0

Es gibt mehrere UWP-Steuerelemente, die "Symbole" anzeigen können.Ihr gemeinsamer Elternteil ist eine IconElement Klasse und es hat die folgenden Implementierungen:

  • BitmapIcon - zeigt ein Bild (in die Regel .png) als Symbol
  • PathIcon - zeigt einen XAML-Pfad als Symbol
  • FontIcon - zeigt eine Zeichenfolge in einer bestimmten Schriftart als Symbol
  • SymbolIcon - zeigt ein Symbol basierend auf einem Wert von vordefinierten Satz von Systemsymbole

Sie können natürlich auch die gleichen Symbole für NavigationView wie für ComboBox Elemente verwenden.

die ComboBox Customizing ist ganz einfach mit XAML, weil es vollständig schablonen ist und Sie können einfach ein eigenes Template erstellen:

Dies setzt voraus, Items ist eine Sammlung einer benutzerdefinierten Klasse, die einehat 0 Eigenschaft mit Pfad zu einem Bild als das Symbol und eine Text Eigenschaft mit etwas Text verwendet. Es wird dann ein zweispaltiges Layout mit einem Symbol auf der linken Seite und Text daneben angezeigt.

+0

Danke, SymbolIcon ist was ich gesucht habe! Aber jetzt habe ich ein anderes Problem (siehe die Hauptnachricht) – christophechichmanian