Pergunta

Ei, eu estou tendo problemas com o ItemContainerGenerator em Silverlight 3.

Na minha derivado ListBox costume que eu estou adicionando este manipulador:

ItemContainerGenerator.ItemsChanged += new ItemsChangedEventHandler(ItemContainerGenerator_ItemsChanged);

Cada vez que os itens alteram Estou recebendo uma volta chamada. Bem até agora.

Agora, no ItemContainerGenerator_ItemsChanged eu quero fazer coisas diferentes, dependendo da ação como esta:

            switch (e.Action)
        {
            case NotifyCollectionChangedAction.Add:
                Debug.WriteLine("items added");
                break;
            case NotifyCollectionChangedAction.Remove:
                Debug.WriteLine("items removed");
                break;
            case NotifyCollectionChangedAction.Replace:
                Debug.WriteLine("items removed");
                break;
            case NotifyCollectionChangedAction.Reset:
                Debug.WriteLine("items reset, itemscount:" + this.Items.Count);

                CalcMaxColumnWidths();

                break;
            default:
                break;
        }

Tudo funciona bem até agora. Nos CalcMaxColumnWidths () eu chamo quando a ação é redefinir eu fazer isso:

foreach (ListBoxItem item in ItemsControlExtensions.GetContainers(this))
        { //some code here }

Aqui está o problema:

O Containers Eu estou tentando obter com as GetContainers () retorna nulo, mesmo que o Items.Count é o valor correto (60).

Em WPF houve uma ItemContainerGenerator.Status, para que pudéssemos esperar até que foi definido para Concluído e, em seguida, iterar sobre os recipientes.

Como posso resolver isso em Silverlight? (Sem Timers!)

Obrigado por sua ajuda!

Foi útil?

Solução

Em vez de fazer toda a magia no próprio ListBox, acabei criando um painel personalizado e usá-lo como o ItemPanel. Na medida do Painel e Organizar ciclos I calcular as larguras das colunas agora. Nestes ciclos de todos os contentores estão já criadas. Problema resolvido.

Mas ainda é uma porcaria que o Estado está ausente da ItemContainerGenerator.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top