Я пишу простое приложение Silver Light и испытываю некоторые проблемы с привязкой, я довольно хорошо знаком с привязкой wpf, но здесь я должен сделать что-то не так,
хорошо, я начал с привязки коллекции к источнику элемента списка, но привязка не была выполнена, и мое событие PropertyChanged всегда было нулевым. Я попытался использовать простую привязку текстового блока к свойству текста без результатов, единственный способ просмотреть текст - это жестко закодированный текст xaml
это мой класс контекста данных:
открытый класс DataContextItems: INotifyPropertyChanged
{
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#region private members
ObservableCollection<string> test;
ObservableCollection<PlayListItem> _PlayList;
PlayListItem[] _PlayListItems;
#endregion
#region public members
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection<PlayListItem> PlayList
{
get { return _PlayList; }
set
{
_PlayList = value;
OnPropertyChanged("PlayList");
}
}
public PlayListItem[] PlayListItems
{
get { return _PlayListItems; }
set { _PlayListItems = value; }
}
public Action<List<PlayListItem>> PlayListItemCallback
{
get { return PlayListArrived; }
}
#endregion
#region constructor
public DataContextItems()
{
_PlayListItems = new PlayListItem[0];
_PlayList = new ObservableCollection<PlayListItem>();
}
#endregion
#region events
void PlayListArrived(List<PlayListItem> playList)
{
foreach (PlayListItem item in playList)
PlayList.Add(item);
}
#region events
}
xaml:
элементы управления: TabItem Header = "search">
управления: TabItem.ContentTemplate>
DataTemplate>
Сетка>
Grid.ColumnDefinitions>
ColumnDefinition />
/Grid.ColumnDefinitions>
ListBox Background = "Grey" ItemsSource = "{Binding PlayList, Mode = TwoWay, DisplayMemberPath =" Name "}">
/ ListBox>
/ Grid>
/ DataTemplate>
/controls:TabItem.ContentTemplate>
/ controls: TabItem>
контекст данных инициализируется в событии Loaded (я тоже пробовал в конструкторе)
private void UserControl_Loaded (отправитель объекта, RoutedEventArgs e)
{
DataContext = MediaWebControlLogic.Instance.GetContext ();
}
вот как я создаю объект
внутренние DataContextItems GetContext ()
{
MediaPlayerWebControl.DAL.MediaMediator mediator = new MediaPlayerWebControl.DAL.MediaMediator ();
DataContextItems context = new DataContextItems ();
mediator.GetPlayList (context.PlayListItemCallback);
возврат контекста;
}
список заполнен асинхронным вызовом. Я думал, что это может быть проблемой, но простое свойство текста тоже не связывалось ...
какие-либо предложения?
Спасибо
Эран