#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. Спасибо, я подумал, что это позволит мне просто привязываться к общедоступным переменным, а не к свойствам.