locked
Preencher controles - Combobox RRS feed

  • Pergunta

  • Bom dia.

    Tenho uma pagina com varios controles. Entre eles tenho 2 combobox que serão preenchidos com valores fixos depedendo da versão.

    Ex: Para o cliente da Versão 1.0:

    combobox1.items.add("1"); combobox1.items.add("2");

    combobox2.items.add("1");

    combobox2.items.add("2");

    Ex: Para o cliente da Versão 2.0:

    combobox1.items.add("1"); combobox1.items.add("2"); combobox1.items.add("3");

    combobox2.items.add("1");
    combobox2.items.add("2");
    combobox2.items.add("3");

    Qual a forma mais elegante de fazer isto no silverlight? Criar uma classe, usar databindind???

    Por favor, me dê um exemplo.

    Att.

    Teles

    quarta-feira, 7 de março de 2012 12:09

Todas as Respostas

  • Boa noite,

    Teles.

    Ao meu ponto de vista isso vai depender muito da sua implementação ou seja da sua real necessidade caso seja algo simples que não necessite de customização, alterações constantes, valores que não se modificam e pequenos código entre outras situações  penso que sua solução esta perfeita e atende a sua necessidade, mas caso haja a necessidade implementar algo mais elaborado segue uma pequena implementação que fiz para te auxiliar.

    Abaixo o código da classe que gera as versões:

        //Classe com estrutura e métodos das versões
        public class clVersoes
        {
            //Estrutura com dados das versões
            public struct clVersions {
                //Atributos das versões
                private int _valor;
                private string _descricao;
                //Métodos das versões
                public int valor {
                    get { return this._valor; }
                    set { this._valor = value; }
                }
                //Métodos das versões
                public string descricao {
                    get { return this._descricao; }
                    set { this._descricao = value ; }
                }
            }
    
            //Método que retorna a lista de versões
            public List<clVersions> getListVersion(int VersionCurrent)
            {
                //Inicializa atributos
                int count = 1;
                List<clVersions> lstreturn = new List<clVersions>();
                //While que monta as versões sempre acrescenta um ao parâmetro
                while (count <= VersionCurrent + 1)
                {
                    //Instancia da estrutura de versões
                    clVersions clVersao = new clVersions();
                    //Inicialização dos atributos
                    clVersao.valor = count;
                    clVersao.descricao = "Versão " + count.ToString();
                    //Adiciona ao uma List
                    lstreturn.Add(clVersao);
                    //Incrementa contador
                    count++;
                }
                //Retorna lista completa
                return lstreturn;
            }
        }
    

    Agora como seria a sua chamada dentro do código para que preencha o combobox:

    //Instancia da classe com os métodos
    clVersoes clVersao = new clVersoes();
    
    //Define qual o atributo será mostrado no combobox
    //Pode ser "descricao" ou "valor"
    comboBox1.DisplayMemberPath = "descricao";
    comboBox2.DisplayMemberPath = "descricao";
    
    //Alimenta o combobox com as informações
    comboBox1.ItemsSource = clVersao.getListVersion(1);
    comboBox2.ItemsSource = clVersao.getListVersion(2);
    
    //Recuperando os dados selecionado
    clVersoes.clVersions itemSelected = (clVersoes.clVersions)comboBox1.SelectedItem;
    MessageBox.Show("Selecionado Descrição: " + itemSelected.descricao + " Número: " + itemSelected.valor.ToString());

    Qualquer duvida estou a disposição.

    Att.

    terça-feira, 8 de maio de 2012 03:30
  • O Manoel praticamente todos os comandos que o senhor precisa. Caso precise utilizar o SelectedValue, atribua em SelectedValuePath o nome da propriedade que irá ser o valor. De qualquer forma a atribuição da valores a combo do silverlight é muito parecida com a do windowsforms. Dificilmente terá grandes problemas com isto. Se o senhor está trabalhando com com binding no DataContext do formulário, eu sugiro que coloque o binding na propriedade Tag do Combo e adicione o evento do tipo Loaded. Assim poderá isolar esta parte da busca com base na versão.

    Samuel Fabel


    • Editado Samuel Fabel quarta-feira, 9 de maio de 2012 13:21 erro na digitação
    quarta-feira, 9 de maio de 2012 13:20