private void PropertyChangedWithValueHandler( object sender, PropertyChangedWithValueEventArgs e ) { var talker = sender as Talker; if (talker != null) { switch (e.PropertyName) { case "Connected": var connected = (bool)e.NewValue; Dispatcher.BeginInvoke( DispatcherPriority.Background, new Action(() => { if (connected) { ShowMessage(null, "Connect: " + talker.Host + ":" + talker.Port); button_Connect.IsEnabled = false; button_Disconnect.IsEnabled = true; button_Send.IsEnabled = true; } else { ShowMessage(null, "Disconnect: " + talker.Host + ":" + talker.Port); button_Connect.IsEnabled = true; button_Disconnect.IsEnabled = false; button_Send.IsEnabled = false; } }) ); break; case "Message": var message = e.NewValue as string; Dispatcher.BeginInvoke( DispatcherPriority.Background, new Action(() => ShowMessage(null, message)) ); break; } } var listener = sender as Listener; if (listener != null) { switch (e.PropertyName) { case "Message": var message = e.NewValue as string; Dispatcher.BeginInvoke( DispatcherPriority.Background, new Action(() => ShowMessage(null, message)) ); break; } } }
// e1.4.3 compatible private void OnPropertyChangedWithValue(object sender, PropertyChangedWithValueEventArgs e) { if (e.PropertyName == "CurrentSelectedClan") { RefreshCanGrantFief(); RefreshCanUsurpThrone(); } }
void _notifyClient(object o, EventArgs e, string eventName) { IDto dto = o as IDto; if (dto == null) { return; } EventArgs eventArgs; PropertyChangedEventArgs ea = e as PropertyChangedEventArgs; if (ea != null && eventName == nameof(INotifyPropertyChanged.PropertyChanged)) { PropertyInfo p = o.GetType().GetProperty(ea.PropertyName); if (p?.CanRead == true) { eventArgs = new PropertyChangedWithValueEventArgs(ea.PropertyName, p.GetValue(o, null)); } else { eventArgs = new PropertyChangedWithValueEventArgs(ea.PropertyName, null); Debug.WriteLine(o, $"{GetType()}: Couldn't get value of {ea.PropertyName}"); } } else { eventArgs = e; } WebSocketMessage message = new WebSocketMessage() { DtoGuid = dto.DtoGuid, Response = eventArgs, MessageType = WebSocketMessage.WebSocketMessageType.EventNotification, MemberName = eventName, #if DEBUG DtoName = dto.ToString(), #endif }; string s = _serialize(message); Send(s); //Debug.WriteLine($"Server: Notification {eventName} on {dto} sent:\n{s}"); }
void _onEventNotificationMessage(object sender, WebSocketMessageEventArgs e) { if (e.Message.DtoGuid == DtoGuid) { Debug.WriteLine($"ProxyBase: Event {e.Message.MemberName} notified on {this} with value {e.Message.Response}"); if (e.Message.MemberName == nameof(INotifyPropertyChanged.PropertyChanged)) { PropertyChangedWithValueEventArgs eav = e.Message.Response as PropertyChangedWithValueEventArgs; if (eav != null) { Type type = this.GetType(); PropertyInfo property = type.GetProperties(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public).FirstOrDefault(p => p.GetCustomAttributes(typeof(JsonPropertyAttribute), true).Where(a => ((JsonPropertyAttribute)a).PropertyName == eav.PropertyName).Any()); if (property != null) { Debug.WriteLine(property.Name); } if (property == null) { property = type.GetProperty(eav.PropertyName); } // if (property.Name == "Commands") // Debug.WriteLine(property.Name); object value = eav.Value; if (property != null) { MethodParametersAlignment.AlignType(ref value, property.PropertyType); } Properties[eav.PropertyName] = value; NotifyPropertyChanged(eav.PropertyName); } } else { OnEventNotification(e.Message); } } }
private void NotifyClient(IDto dto, EventArgs e, string eventName) { try { if (e is WrappedEventArgs ea && ea.Args is PropertyChangedEventArgs propertyChangedEventArgs && eventName == nameof(INotifyPropertyChanged.PropertyChanged)) { var p = dto.GetType().GetProperty(propertyChangedEventArgs.PropertyName); PropertyChangedWithValueEventArgs value; if (p?.CanRead == true) { value = new PropertyChangedWithValueEventArgs(propertyChangedEventArgs.PropertyName, p.GetValue(dto, null)); } else { value = new PropertyChangedWithValueEventArgs(propertyChangedEventArgs.PropertyName, null); Debug.WriteLine(dto, $"{GetType()}: Couldn't get value of {propertyChangedEventArgs.PropertyName}"); } Debug.WriteLine($"Server: PropertyChanged {propertyChangedEventArgs.PropertyName} on {dto} sent"); Send(new SocketMessage(value) { MessageType = SocketMessage.SocketMessageType.EventNotification, DtoGuid = dto.DtoGuid, MemberName = eventName, }); } else { Send(new SocketMessage(e) { MessageType = SocketMessage.SocketMessageType.EventNotification, DtoGuid = dto.DtoGuid, MemberName = eventName }); } }
private void OnPropertyChangedWithValueEventHandler(object?sender, PropertyChangedWithValueEventArgs args) { OnPropertyChangedWithValue(args.Value, args.PropertyName); }