Ik ben bezig met een toepassing van de opslag van windows en een van de dingen die ik wil doen in de app is een logboek waarin statusberichten en andere informatieve lekkernijen als de gebruiker dingen werkt weergeven. Te dien einde, Ik voegde een ListBox als volgt:
<ListBox x:Naam ="GameStateLog" HorizontalAlignment ="Center" Hoogte ="221" VerticalAlignment ="Boven" Breedte ="499" Opvulling ="0" Tekengrootte (FontSize) ="10">
De C#-code om te vullen de listbox tijdens runtime was langs de lijnen van:
GameStateLog.Items.Insert(0, GameStateCounter + ": Nieuwe spel staat: speler wacht 1 naam");
Dit werkte goed genoeg maar de UI toonde een gek bedrag van opvulling rond de afzonderlijke berichten zoals ze zijn toegevoegd. Dat is logisch als ik wil eind-de gebruikers kunnen om deze items te selecteren, maar houdt geen steek wanneer ik wil gewoon laten zien een lopende reeks van berichten in het logboek-gebruikers deze zal niet selecteren, alleen te bekijken. Het was vreemd moeilijk te vinden een eenvoudige manier om dit te doen en misschien wel, de manier waarop ik vond het niet noodzakelijkerwijs "gemakkelijk" maar ik heb het werkt OK. Het belangrijkste inzicht kwam uit dit bericht Hier (http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c4a6f694-bd46-4779-ab83-b1c2fcb2397c) van Bob Relyea. In plaats van tekenreeksen toevoegen aan de Items-collectie op de ListBox, ListBoxItems toevoegen. Door het toevoegen van een string, ListBox was het creëren van zijn eigen ListBoxItem op eigen. Ik was niet in staat te beïnvloeden om het even wat over dat ListBoxItem na het feit. De nieuwe code is:
privé VOID AddGameStateLogMessage(tekenreeks theMessage) { ListBoxItem li = Nieuw ListBoxItem(); Li.Inhoud = theMessage; Li.MaxHeight = 25; Dikte thisPadding = Nieuw Dikte(5, 0, 5, 0); Li.Opvulling = thisPadding; GameStateLog.Items.Insert(0,Li); }
Hier ben ik het creëren van de ListBoxItem en het invoegen van hen. Ik verwijderde de overtollige opvulling door in te stellen de dikte.
Dit is vrij flexibel als ik denkt te doen wat kleur codering om te markeren van bepaalde soorten berichten en door direct toe te voegen ListBoxItems krijg ik om de stijl van hen elke gewenste.
Hoop dat dit helpt iemand!
</einde>
Volg mij op Twitter op http://www.twitter.com/pagalvin