none
Не обновляется прибиндиное поле ObservableCollection RRS feed

  • Вопрос

  • Здравствуйте. Никак не могу понять в чем может быть дело. У меня есть событие и обработчик события подписанный на него, в обработчике передается коллекция которая должна отобразиться в ListBox , но она почему то не отображается. Используется фрэимворк Prism 
    Обработчик
    Код C#
    1
    
    ObservableCollection<string> collection = new ObservableCollection<string>();
    Код C#
    1
    2
    3
    4
    
    private void AddNewLinkEventHandler(TenderLinksCollection tenderLink)
            {
                ConvertLinkCollection(tenderLink);
            }
    Код C#
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    private ObservableCollection<string> ConvertLinkCollection(TenderLinksCollection tenderLink)
            {
                
                foreach (var t in tenderLink.TenderLinkColectionHelper)
                {
                    collection.Add(t.Link);
                }
                return collection;
            }
    Так пытаюсь прибиндить его 
    Код C#
    1
    
    <ListBox ItemsSource="{Binding Path=ConvertLinkCollection}"></ListBox>
    Подскажите пожалуйста что я не так делаю ?
    4 сентября 2014 г. 10:50

Ответы

  • Добрый день.

    Покажите, как у вас объявлено свойство ConvertLinkCollection, и как вы ему присваиваете вашу collection. У меня есть подозрение, что вы просто забыли объявить это свойство (или оно не свойство) и/или не присваиваете ему коллекцию.

    • Помечено в качестве ответа Timur2008 5 сентября 2014 г. 4:32
    4 сентября 2014 г. 11:09
    Отвечающий
  • Я смотрел как в примерах работали с ObservableCollection там не объявляли отдельно свойство , и у меня их пример работает но там коллекция непосредственно в коде задается а у меня передается в этот класс в качестве параметра 

    Но всеже решил попробовать задать это свойство зависимости , но оно всеравно не работает :((

    делал там 

       public class BindingItem : DependencyObject
        {
            public ObservableCollection<string>  LinkItems
            {
                get { return (ObservableCollection<string>)GetValue(LinkItemsProperty); }
                set { SetValue(LinkItemsProperty, value); }
            }

            // Using a DependencyProperty as the backing store for LinkItems.  This enables animation, styling, binding, etc...
            public static readonly DependencyProperty LinkItemsProperty =
                DependencyProperty.Register("LinkItems", typeof(ObservableCollection<string>), typeof(BindingItem));
        }

    и так данные передаю 

    binditemprop.LinkItems = ConvertLinkCollection(tenderLink);


    private ObservableCollection<string> ConvertLinkCollection(TenderLinksCollection tenderLink)
            {
                foreach (var t in tenderLink.TenderLinkColectionHelper)
                {
                    collection.Add(t.Link);
                }
                return collection;
            }
    
            BindingItem binditemprop = new BindingItem();

    Что я не так делаю :(

    Нашел в

    чем ошибка , забыл про get 

    Добавил код

    public ObservableCollection<string> FindedLink
            {
                get
                {
                    return collection;
                }
            }

    public ObservableCollection<string> FindedLink
            {
                get
                {
                    return collection;
                }
            } и его уже биндю :)
    • Изменено Timur2008 5 сентября 2014 г. 4:31
    • Помечено в качестве ответа Timur2008 5 сентября 2014 г. 4:31
    5 сентября 2014 г. 2:53

Все ответы

  • Добрый день.

    Покажите, как у вас объявлено свойство ConvertLinkCollection, и как вы ему присваиваете вашу collection. У меня есть подозрение, что вы просто забыли объявить это свойство (или оно не свойство) и/или не присваиваете ему коллекцию.

    • Помечено в качестве ответа Timur2008 5 сентября 2014 г. 4:32
    4 сентября 2014 г. 11:09
    Отвечающий
  • Я смотрел как в примерах работали с ObservableCollection там не объявляли отдельно свойство , и у меня их пример работает но там коллекция непосредственно в коде задается а у меня передается в этот класс в качестве параметра 

    Но всеже решил попробовать задать это свойство зависимости , но оно всеравно не работает :((

    делал там 

       public class BindingItem : DependencyObject
        {
            public ObservableCollection<string>  LinkItems
            {
                get { return (ObservableCollection<string>)GetValue(LinkItemsProperty); }
                set { SetValue(LinkItemsProperty, value); }
            }

            // Using a DependencyProperty as the backing store for LinkItems.  This enables animation, styling, binding, etc...
            public static readonly DependencyProperty LinkItemsProperty =
                DependencyProperty.Register("LinkItems", typeof(ObservableCollection<string>), typeof(BindingItem));
        }

    и так данные передаю 

    binditemprop.LinkItems = ConvertLinkCollection(tenderLink);


    private ObservableCollection<string> ConvertLinkCollection(TenderLinksCollection tenderLink)
            {
                foreach (var t in tenderLink.TenderLinkColectionHelper)
                {
                    collection.Add(t.Link);
                }
                return collection;
            }
    
            BindingItem binditemprop = new BindingItem();

    Что я не так делаю :(

    Нашел в

    чем ошибка , забыл про get 

    Добавил код

    public ObservableCollection<string> FindedLink
            {
                get
                {
                    return collection;
                }
            }

    public ObservableCollection<string> FindedLink
            {
                get
                {
                    return collection;
                }
            } и его уже биндю :)
    • Изменено Timur2008 5 сентября 2014 г. 4:31
    • Помечено в качестве ответа Timur2008 5 сентября 2014 г. 4:31
    5 сентября 2014 г. 2:53