Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di exFelino
    Registrato dal
    Jul 2014
    residenza
    Aci Catena (CT)
    Messaggi
    710

    [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.

  2. #2
    Utente di HTML.it L'avatar di exFelino
    Registrato dal
    Jul 2014
    residenza
    Aci Catena (CT)
    Messaggi
    710
    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 exFelino; 20-02-2015 a 17:43

  3. #3
    Utente di HTML.it L'avatar di exFelino
    Registrato dal
    Jul 2014
    residenza
    Aci Catena (CT)
    Messaggi
    710
    Risolto!


    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.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.