Eto.Forms StackLayout of Labels обновляет весь список на Add - PullRequest
0 голосов
/ 10 октября 2019

Вот видео того, что происходит, когда я звоню StackLayout.Items.Add(Label): https://streamable.com/hczt8

Кажется, что список полностью очищается от нового списка, и простой код таков:

    public class ChatPanel : Scrollable
    {
        StackLayout _messages;

        public ChatPanel()
        {
            _messages = new StackLayout();
            Content = _messages;
            BackgroundColor = Colors.Azure;

            _currentAccountData.Chat.EvOnChatMessage += OnMessage; // Custom event when a message is received
        }

        void OnMessage(ChatMessage m)
        {
            Label label = new Label();
            string date = $"[00:00:00]";
            if (m.GetType().Equals(typeof(PlayerMessage)))
            {
                PlayerMessage message = (PlayerMessage) m;
                label.Text = $"{date} {message.Pseudo}: {message.Message}";
            }
            else
            {
                label.Text = $"{date} {((ServerMessage)m).Message}";
            }
            _messages.Items.Add(new StackLayoutItem(label)); // I tried without "StackLayoutItem" too
        }
    }

Я не могу найти ни Контейнера, ни Контроля, отвечающего моим потребностям. ( полный список здесь )

Почему он так обновляется? Есть ли другой контроль, который я могу использовать, чтобы избежать этого? Или я неправильно использую компонент?

1 Ответ

0 голосов
/ 13 октября 2019

Метка не приспособлена для этого. Я использовал RichtextBox и установил Rtf свойство. Я должен был использовать этот ответ

...