有人請幫助我理解了爲什麼這種結合不工作...Silverlight 3中收集結合
我有一個名爲SelectionManager用一種叫做由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中更新我的所有其他綁定正確,包括於「日期」組合框。但是,我的用戶控件不會更新。 Debug.Writeline不會在'pairs'屬性的set語句中調用。
在玩弄它,我已經嘗試使DQMServiceDateCountPair []屬性成爲ObservableCollection並實現INotifyCollectionChanged,但這並沒有幫助。
如果我將源屬性或目標屬性作爲數組離開,並將另一個作爲ObservableCollection,那麼我得到一個綁定錯誤,表示它不能自動將其轉換爲另一個,所以Silverlight似乎意識到綁定,它只是不更新它。
任何人都可以幫忙嗎?
P.S.我使用Silverlight 3
我想你可能會誤解這個問題。 SelectionManager類正在從WCF服務正確更新。問題是DateSelector類的屬性'pairs'綁定到'日期',不會更新。 除非我誤解,DataContract/DataMember的東西在WebService中使用,以促進序列化。我的應用程序中的用戶控件之間沒有序列化。 – Klay 2009-11-09 21:07:15
問題是NotifyPropertyChanged事件沒有被拋出?如果是這樣,安東尼的答案在下面解決這個問題。 – 2009-11-10 10:04:57