Как привязать данные к ListBox.ItemSource с использованием шаблона MVVM - PullRequest
0 голосов
/ 04 сентября 2011

Я разработчик приложения WP7. Кто-нибудь знает идею о том, как связать данные с ListBox.ItemSource в классе ViewModel?

Ответы [ 2 ]

3 голосов
/ 04 сентября 2011
<ListBox ItemsSource={Binding ViewModelPropertyName}" />

ViewModelPropertyName должен возвращать IList или лучше.
Если вы хотите показать изменения в коллекции, она должна вернуть INotifyCollectionChanged, например ObservableCollection<T>.

<ListBox ItemsSource={Binding ViewModelPropertyName}" />
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text={Binding PropertyNameWithinObject} />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
0 голосов
/ 24 апреля 2013

в том же примере выше, вам нужно определить имя привязки «ViewModelPropertyname» в классе

Пример: имя класса как «Модель»

        int _PropertyNameWithinObject;
        public int PropertyNameWithinObject
        {
            get
            {
                return PropertyNameWithinObject;
            }
            set
            {
                PropertyNameWithinObject= value;
                OnPropertyChanged("PropertyNameWithinObject");
            }
        }

Включить следующий класс вКласс «Модель»

public class ViewModelBaseEx : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        protected void OnPropertyChanged(string name)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(name));
            }
        }
    }

Затем определите коллекцию в другом классе с именем «ViewModel»

        ObservableCollection<Model> _ViewModelPropertyName= new ObservableCollection<Model>();
        public ObservableCollection<Model> ViewModelPropertyName
        {
            get
            {
                return _ViewModelPropertyName;
            }
            set
            {
                _ViewModelPropertyName= value;
                OnPropertyChanged("ViewModelPropertyName");
            }
        }

для следующих привязок

 <ListBox ItemsSource={Binding ViewModelPropertyName}" />
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text={Binding PropertyNameWithinObject} />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

иназначьте класс "ViewModel" в datacontext этой страницы в c # или дизайне, здесь я объявил в c # странице, как

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