Category Archives: XAML

Definindo a altura da ListboxItems em uma caixa de listagem programaticamente para App Store do Windows

Estou trabalhando em um aplicativo de armazenamento do windows e uma das coisas que quero fazer no app é exibir um log que mostra mensagens de status e outros petiscos informativos como o utilizador trabalha as coisas. Para este fim., Eu adicionei um ListBox como segue:

<ListBox x:Nome ="GameStateLog" HorizontalAlignment ="Centro" Altura ="221" VerticalAlignment ="Início" Largura ="499" Preenchimento ="0" FontSize ="10">

 

O código c# para preencher o listbox em tempo de execução foi ao longo das linhas de:

GameStateLog.Items.Insert(0, GameStateCounter     + ": Novo estado do jogo: esperando por jogador 1 nome");

Isso funcionou bem o suficiente, mas a interface do usuário mostrou uma quantidade louca de preenchimento ao redor as mensagens individuais como eles foram adicionados. Isso faz sentido, se deseja que os usuários finais para ser capaz de selecionar esses itens, mas não faz sentido quando eu só quero mostrar uma série de duração das mensagens de log-os usuários não selecionar estas, apenas visualizá-los. Era estranhamente difícil de encontrar uma maneira fácil de fazer isso e, possivelmente,, a maneira que eu encontrei não é necessariamente "fácil", mas eu consegui trabalhar Okey. O insight chave veio nesta postagem here (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) de Bob Relyea. Em vez de adicionar seqüências de caracteres para a coleção de itens no ListBox, Adicionar ListBoxItems. Adicionando uma cadeia de caracteres, o ListBox foi criando sua própria ListBoxItem por conta própria. Eu não era capaz de afetar qualquer coisa sobre esse ListBoxItem após o fato. O novo código é:

        privada privatevoid AddGameStateLogMessage(Cadeia de caracteres Amensagem)
        {
            ListBoxItem li = Novo ListBoxItem();
            Li.Conteúdo = mensagem;
            Li.MaxHeight = 25;

            Espessura thisPadding = Novo Espessura(5, 0, 5, 0);
            Li.Preenchimento = thisPadding;

            GameStateLog.Items.Insert(0,Li);
        }

 

Aqui estou criando do ListBoxItem e inseri-los. Eu removi o preenchimento em excesso, definindo sua espessura.

Isso é muito flexível que eu pretendo fazer alguma cor de codificação para destacar determinados tipos de mensagens e adicionando diretamente ListBoxItems eu chegar ao estilo-los como quiser.

Espero que isso ajude alguém!

</fim>

undefinedSubscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin