我是Silverlight新手,我無法做出簡單的Silverlight綁定示例工作!Silverlight綁定不起作用
我需要製作一個視圖模型,該視圖模型顯示列表中正在加載的文檔的數量。
我做了一個基類,即實現INotifyPropertyChanged:
public abstract class BaseViewModel : INotifyPropertyChanged {
protected BaseViewModel() {}
#region INotifyPropertyChanged Members
protected void OnPropertyChanged(string propertyName) {
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
我做了一個子級,即有 「CountDocs」 屬性:
public class DocumentViewModel : BaseViewModel {
public DocumentViewModel() {
...
}
...
public int CountDocs {
get { return countDocs; }
set {
if (countDocs != value) {
countDocs = value;
OnPropertyChanged("CountDocs");
}
}
}
public int countDocs;
}
我DocumentViewModel.xaml與以下內容:
<UserControl
...
xmlns:vm="clr-namespace: ... .ViewModels" >
...
<UserControl.Resources>
<vm:DocumentViewModel x:Key="viewModel"/>
</UserControl.Resources>
...
<TextBlock x:Name="CounterTextBlock" Text="{Binding Source={StaticResource viewModel}, Path=CountDocs}"></TextBlock>
那是我提到的我的子類的命名空間,我做了一個資源我的子類與關鍵「viewModel」,我輸入文本塊的綁定,這個對象的屬性「CountDocs」。
問題是CountDocs屬性只填充TextBlock一次:on load。但後來我設置了CountDocs,並且它不填充TextBlock。
我試圖使用綁定的Mode屬性來使用DataContext,但我仍然無法使其工作。
綁定有什麼問題嗎?如何更改我的對象的CountDocs屬性時ViewModel更新?
感謝
你有沒有檢查它是否通過'處理程序!= null'條件並引發事件? – Zabavsky 2012-08-14 08:57:50
VS中的「輸出」窗口會顯示綁定失敗。我不得不看到更多的代碼,但是一個可能的遠程診斷是你無意中創建了多個「DocumentViewModel」實例。 – herzmeister 2012-08-14 09:00:33
你是否試圖在另一個線程上設置新值?任何UI屬性更新都必須在UI線程上進行(例如,您將需要使用調度程序將它們傳遞給UI線程)。如果是這樣,可能的答案在下面給你。 – 2012-08-14 09:17:09