Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-02-2015, 17:06   #1
robertino_salemi
Senior Member
 
L'Avatar di robertino_salemi
 
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
[WPF] Eseguire il BIND di un Enumerativo in una Combobox

Hi,

I have this enum type:
Codice:
        public enum SchedActiveEnum
        {
            [Description("All")]
            All,
            [Description("Y")]
            Y,
            [Description("N")]
            N
        }
Qual è il modo migliore per eseguire il bind in una combobox?

Vorrei visualizzare la description ma ricevere il valore.

Grazie.
robertino_salemi è offline   Rispondi citando il messaggio o parte di esso
Old 20-02-2015, 15:03   #2
robertino_salemi
Senior Member
 
L'Avatar di robertino_salemi
 
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
Risolto tramite l'utilizzo di un dizionario:

Codice:
private Dictionary<Definition.SchedActiveEnum, string> _schedActive;

public Dictionary<Definition.SchedActiveEnum, string> SchedActive
{
	get
	{
		if (_schedActive == null)
		{
			_schedActive = new Dictionary<Definition.SchedActiveEnum, string>();
			var myList = Enum.GetValues(typeof(Definition.SchedActiveEnum)).Cast<Enum>().Select(value => new
			{
				value,
				(Attribute.GetCustomAttribute(
				value.GetType().GetField(value.ToString()),
				typeof(DescriptionAttribute)) as DescriptionAttribute).Description
			}
			);

			foreach (var item in myList)
			{
				_schedActive.Add((Definition.SchedActiveEnum)item.value, item.Description);
			}
		}
		return _schedActive;
	}
}
nello xaml ho eseguito il Bind:
Codice:
<ComboBox Name="cmbActive"
		  DataContext="{StaticResource DomainDataViewModel}"  
		  ItemsSource="{Binding SchedActive}" 
		  DisplayMemberPath="Value" 
		  SelectedValuePath="Key" 
		  Width="50">
dove DataContext è il mio ViewModel.

L'unico problema: dalla cambo ricevo il valore della Description e non la Key del dizionario, come mai?

Grazie.

Ultima modifica di robertino_salemi : 20-02-2015 alle 15:43.
robertino_salemi è offline   Rispondi citando il messaggio o parte di esso
Old 22-02-2015, 14:17   #3
msangi
Member
 
Iscritto dal: Sep 2011
Città: Londra
Messaggi: 167
Anziché usare un dizionario, prova a dare un'occhiata ai ValueConverter. Fanno esattamente quello che serve a te, permettendoti di passare alla ComboBox l'oggetto che del tuo dominio e di avere un metodo per effettuare la conversione nella sua rappresentazione testuale.

https://social.msdn.microsoft.com/Fo...alue?forum=wpf
__________________
Twitter - Blog
msangi è offline   Rispondi citando il messaggio o parte di esso
Old 23-02-2015, 09:10   #4
robertino_salemi
Senior Member
 
L'Avatar di robertino_salemi
 
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
Quote:
Originariamente inviato da msangi Guarda i messaggi
Anziché usare un dizionario, prova a dare un'occhiata ai ValueConverter. Fanno esattamente quello che serve a te, permettendoti di passare alla ComboBox l'oggetto che del tuo dominio e di avere un metodo per effettuare la conversione nella sua rappresentazione testuale.

https://social.msdn.microsoft.com/Fo...alue?forum=wpf
Effettivamente avevo pensato a questa soluzione, poi però ho risolto sempre con il dizionario:

Codice:
private Dictionary<Definition.SchedActiveEnum, string> _schedActive;

public Dictionary<Definition.SchedActiveEnum, string> SchedActive
{
	get
	{
		if (_schedActive == null)
		{
			_schedActive = new Dictionary<Definition.SchedActiveEnum, string>();

			//Permette di visualizzare la Description dell'Enum 
			var myList = Enum.GetValues(typeof(Definition.SchedActiveEnum)).Cast<Enum>().Select(value => new
			{
				value,
				(Attribute.GetCustomAttribute(
				value.GetType().GetField(value.ToString()),
				typeof(DescriptionAttribute)) as DescriptionAttribute).Description
			}
			);

			foreach (var item in myList)
			{
				_schedActive.Add((Definition.SchedActiveEnum)item.value, item.Description);
			}

		}
		return _schedActive;
	}
}
nello xaml:

Codice:
<ComboBox Name="cmbActive"
		  DataContext="{StaticResource DomainDataViewModel}"  
		  ItemsSource="{Binding SchedActive}" 
		  DisplayMemberPath="Value" 
		  SelectedValuePath="Key"
		  Width="50">
</ComboBox>
Grazie.
robertino_salemi è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Il padrino del deep learning avverte: gl...
Il finto avviso "iPhone Storage is Full"...
Dietrofront in Cina, addio touchscreen p...
Un piccolo accessorio trasforma lo smart...
Dopo 370 anni il Cyphral Distich non è p...
Oppo Find X10, X10 Pro Max e X10 E: conf...
Dal microscopio all'IA: un cervello di i...
Cyberpunk 2077 arriverà su Battle...
Altro che divieto: interi pallet di GeFo...
QNAPTS-h966TX, il NAS per chi fa editing...
Il trucco semplicissimo per installare W...
Apple rinvia due novità di iOS 27...
Una memoria ferroelettrica raggiunge 10 ...
Honor Magic 9, Pro Max e Super Edition: ...
24 offerte Amazon da non perdere, dalla ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 14:53.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v