Элементы списка WPF очищаются, но вновь появляются при перезагрузке - PullRequest
0 голосов
/ 27 января 2011

У меня есть список в Wpf.Я напрямую добавляю элементы в этот список.Я добавил кнопку очистки, которая запускает команду items.clear () и удаляет все элементы.Однако при перезапуске приложения все элементы возвращаются в список!Хранятся ли они где-нибудь, и если да, как я могу отключить это?

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

<ListBox x:Name="Results" Margin="222,31,8,44" />

Midiinput.ChannelMessageReceived += delegate(object sender, ChannelMessageEventArgs e)
{
    string result = e.Message.MessageType.ToString() + " " + e.Message.Command.ToString() + " " + e.Message.Data1.ToString() + " " + e.Message.Data2.ToString();
    Results.Items.Add(result); Clearbutton.IsEnabled = true;
};

Ответы [ 3 ]

0 голосов
/ 27 января 2011

Если элементы возвращаются при перезапуске приложения, я думаю, что одно из следующего верно: 1) Вы заполняете список во время ДИЗАЙНА, используя свойство Items и вводите строки в коллекцию вручную.2) Вы выполняете код, который заполняет список из хранилища, либо в коде, либо в файле.

-C

0 голосов
/ 27 января 2011

На ваш второй вопрос

Может ли табличка данных применяться к список, в котором элементы находятся непосредственно добавлено и не связано?

ItemTemplate объекта ListBox копируется в ContentTemplate объекта ListBoxItem во время создания пользовательского интерфейса. Однако при прямом добавлении ListBoxItems ItemTemplate игнорируется для элементов, уже имеющих тип контейнера ItemsControl (ListBoxItem). Так что вместо этого вам придется использовать ContentTemplate из ListBoxItem. Вот пример

<ListBox>
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <TextBlock Foreground="Green" Text="{Binding}"/>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ListBox.ItemContainerStyle>
    <ListBoxItem Content="Item 1"/>
    <ListBoxItem Content="Item 2"/>
    <ListBoxItem Content="Item 3"/>
</ListBox>

Если у вас возникли проблемы с элементами, которые появляются повторно при повторном запуске приложения:

Я бы попытался найти все места, где вы добавляете элементы в свой ListBox, с помощью кода (поиск результатов.Items.Add). Добавьте точку останова в каждое из этих мест, чтобы увидеть их в отладчике при добавлении. Сам ListBox не будет иметь никакой памяти о том, как он выглядел при закрытии, если вы не реализуете это.

Если это не работает, попробуйте изменить имя вашего ListBox на ResultsTest или что-то в этом роде, скомпилируйте и исправьте все ошибки, которые вы получили, закомментировав весь код, ссылающийся на ListBox, и снова запустите программу. Это должно оставить вас без элементов в ListBox. После этого начинайте раскомментировать свой код, шаг за шагом, пока не найдете место ошибки.

0 голосов
/ 27 января 2011

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

Я полагаю, что ваше приложение просто имеет некоторые элементы, объявленные в разметке, и при запуске приложения элементы списка анализируются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...