我在更新Silverlight的依賴項屬性時遇到問題。我正在設置一個屬性並通知它在我的父類中已更改。自定義控件通過依賴屬性偵聽此屬性的更改,但它從不打它(調用更改回調)。我一直在玩這個遊戲,唯一一次能夠擊中它的是如果我設置了一個默認值,但它永遠不會達到新的值。我正在設置斷點並查看這些值的變化,甚至將一個帶有NotificationModel.Type對象的文本塊放入它中,並且它正常更改。請幫忙!Silverlight的依賴屬性沒有更新/更改
Main.xaml
<views:NotificationView x:Name="NotificationView" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" Notification="{Binding Path=DataContext.Notification, ElementName=LayoutRoot, Mode=TwoWay}"></views:NotificationView>
MainViewModel.cs
void part_NotificationChanged(object sender, NotificationChangedEventArgs e)
{
Notification = new NotificationModel()
{
Notifications = e.Notification.Notifications,
Type = e.Notification.Type
};
}
private NotificationModel _notification;
public NotificationModel Notification
{
get
{
return _notification;
}
set
{
_notification = value;
this.OnPropertyChanged("Notification");
}
}
NotificationView.xaml.cs
public partial class NotificationView : UserControl
{
public NotificationView()
{
InitializeComponent();
}
public NotificationModel Notification
{
get
{
return (NotificationModel)GetValue(NotificationProperty);
}
set
{
SetValue(NotificationProperty, value);
}
}
public static readonly DependencyProperty NotificationProperty =
DependencyProperty.Register("Notification", typeof(NotificationModel), typeof(NotificationView), new PropertyMetadata(new PropertyChangedCallback(OnNotificationChanged)));
private static void OnNotificationChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
NotificationView view = d as NotificationView;
if (view != null)
{
NotificationModel notification = e.NewValue as NotificationModel;
if (notification != null)
{
switch (notification.Type)
{
case NotificationType.Success:
view.LayoutRoot.Children.Add(new SuccessView() { Message = notification.Notifications.FirstOrDefault() });
break;
case NotificationType.Error:
view.LayoutRoot.Children.Add(new ErrorsView() { Errors = notification.Notifications });
break;
case NotificationType.Caution:
break;
default:
view.LayoutRoot.Children.Clear();
break;
}
}
}
}
}
相信我我也這樣做了,它只是留下了代碼,我嘗試使用,而不是剛纔提到的代碼,但它的工作原理雖然如此。是的,它必須以某種方式默默地失敗,我不能指出如何或在哪裏。 – 2010-10-21 21:56:09