Silverlight DataBinding MVVM

#silverlight #xaml #binding

#silverlight #xaml #привязка

Вопрос:

У меня возникли некоторые проблемы с настройкой привязки данных в Silverlight.

Я пытаюсь использовать подход MVVM и нашел несколько хороших примеров, поэтому я создал свой View и свою ViewModel, я создал несколько классов, которые я собираюсь использовать для хранения данных, и один для заполнения классов.

Во-первых, моя ViewModel выглядит как:

  public class MainPageVM : INotifyPropertyChanged
    {
        ObservableCollection<Item> Items;
        public MainPageVM()
        {
            InitializeItems InitItems = new InitializeItems();
            InitItems.GenerateItemList(out Items);
            RaiseProertyChanged("Items");
        }
        public string test = "Binding Test";

        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

        private void RaiseProertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this,new System.ComponentModel.PropertyChangedEventArgs(propertyName));
            }
        }
    }
  

И тогда, на мой взгляд, у меня есть :

 <UserControl.Resources>
    <viewmodel:MainPageVM x:Key="ViewModel" />    
</UserControl.Resources>
    <Grid x:Name="LayoutRoot" Background="White" DataContext="{StaticResource ViewModel}">
    <StackPanel>
        <TextBlock Text="{Binding test}"/>
        <ListBox ItemsSource="{Binding Items}"
             Width="200"
             Height="200">
            <ListBoxItem Width="190" Height="20">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding ItemName}"/>
                    <TextBlock Text="-"/>
                    <TextBlock Text="{Binding ItemID}"/>
                </StackPanel>
            </ListBoxItem>
        </ListBox>
    </StackPanel>
</Grid>
  

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

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

Спасибо

Комментарии:

1. Почему кто-то отклонил это?

Ответ №1:

Элементы должны быть общедоступным свойством. То же самое с вашим тестовым полем. В Silverlight вы можете привязываться только к общедоступным свойствам.

Кроме того, обычно в установщике этих свойств вы вызываете событие изменения свойства. Это указывает среде выполнения Silverlight обновить элементы управления, которые привязаны к этому свойству, новыми значениями этого свойства.

Комментарии:

1. Спасибо, я подумал, что это позволит мне просто привязываться к общедоступным переменным, а не к свойствам.