ListBox не обновляется в non debug - PullRequest
0 голосов
/ 22 февраля 2010

Кто-нибудь знает, почему мой ListBox не заполняется при работе в отладочной версии Visual Studio? При работе в отладочной версии (F5) он прекрасно работает без каких-либо точек останова, но когда я запускаю в режиме без отладки (Ctrl + F5), он не заполняется.

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

public partial class ErrorLog: Window
    {
        /// <summary>
        /// Collection of all errors
        /// </summary>
        public static SafeObservable<ErrorMessage> ErrorList
        {
            get {
                return ErrorLog.errorList; 
            }
            set
            {
                ErrorLog.errorList = value;
            }
        } private static SafeObservable<ErrorMessage> errorList = new SafeObservable<ErrorMessage>();

        /// <summary>
        /// Default constrcutor
        /// </summary>
        public ErrorLog()
        {
            InitializeComponent();
        }

        private void Clear_Click(object sender, RoutedEventArgs e)
        {
            //ErrorLog.ErrorList.Clear();
        }
    }

Класс SafeObservable - это просто расширение обычного класса ObservableColleciton, использующего диспетчер для вызова при необходимости обновления пользовательского интерфейса из другого потока. Я использую эту коллекцию в своем проекте в 12 разных местах, и она отлично работает. Но в этом единственном случае это не так.

Ссылка на SafeObservable находится здесь

Код XAML ниже

<Window x:Class="Dashboard.ErrorLog"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:Dashboard"
    Title="ErrorLog" Height="448" Width="822" WindowStyle="ToolWindow">
    <Grid Background="#222222">
        <ListBox Name="Error_listBox" ItemsSource="{Binding Source={x:Static local:ErrorLog.ErrorList}}" Margin="12,12,12,41" IsSynchronizedWithCurrentItem="True" />
        <Button Height="23" HorizontalAlignment="Left" Margin="12,0,0,12" Name="Clear" VerticalAlignment="Bottom" Width="75" Click="Clear_Click">Clear</Button>
    </Grid>
</Window>

Любая помощь высоко ценится.

1 Ответ

0 голосов
/ 23 февраля 2010

Это действительно странно.

Это работает, если я просто вызываю любую функцию из главного окна.

Я добавил ErrorLog.ErrorList.Clear () сразу после инициализации главного окна, и теперь оно работает нормально. У кого-нибудь есть идеи, почему это так? Это как-то связано со статичностью коллекции?

Мне не нравится иметь такой случайный код, чтобы заставить что-то работать ... Должен быть более хороший способ сделать это.

Спасибо за предложение Остин

...