Кто-то, пожалуйста, помогите мне понять, почему эта привязка не работает ...
У меня есть класс SelectionManager со свойством date, которое заполняется службой WCF. Свойство представляет собой массив структур, которые связывают DateTime и целое число бизнес-объектов.
public class SelectionManager : INotifyPropertyChanged {
... other properties ...
public DQMServiceDateCountPair[] dates { get; private set; }
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string propertyName) {
if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); }
}
У меня есть другой класс с именем DateSelector, у которого есть свойство DependencyProperty, называемое настройками «пар», которое является целью привязки «дат».
public partial class DateSelector : UserControl {
... other stuff ...
public static readonly DependencyProperty pairsProperty = DependencyProperty.Register(
"pairs",
typeof(DQMServiceDateCountPair[]),
typeof(DateSelector),
new PropertyMetadata(new DQMServiceDateCountPair[0])
);
public DQMServiceDateCountPair[] pairs {
get { return (DQMServiceDateCountPair[])GetValue(pairsProperty); }
set {
Debug.WriteLine("adding dates");
SetValue(pairsProperty, value);
dateMode = DateMode.Years;
}
}
}
В моем MainPage.xaml у меня есть такая строка:
<date:DateSelector x:Name="dateSelector" pairs="{Binding dates}" />
Это странно, потому что все мои другие привязки в MainPage.xaml корректно обновляются, включая ComboBox, привязанный к «датам». Мой UserControl, однако, не будет обновляться. Debug.Writeline не вызывается в операторе set свойства 'pair'.
Играя с ним, я попытался превратить свойство DQMServiceDateCountPair [] в ObservableCollection и реализовать INotifyCollectionChanged, но это не помогает.
Если я оставлю либо свойство источника, либо свойство цели в виде массива и сделаю другое ObservableCollection, то получу ошибку привязки, которая говорит о том, что он не может автоматически преобразовывать одно в другое, поэтому Silverlight, кажется, знает о привязка, просто не обновляется.
Может кто-нибудь помочь?
P.S. Я использую Silverlight 3.