Я получаю сообщение об ошибке при запуске этого кода на физическом телефоне, но не на эмуляторе:
System.ArgumentException "Параметр неверен"
когда я использую следующий код.Это пользовательский тип, который я создал, чтобы позволить мне легко создавать типы, которые могут привязываться к представлению.
В этой строке выдается исключение:
this.PropertyChanged(this, new PropertyChangedEventArgs("Value"));
Это прекрасно работало, пока ясделал это Generic:
public class BindableType<T> : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private T _value;
private T _previousValue;
public T Value
{
get
{
return _value;
}
set
{
_previousValue = _value;
_value = value;
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("Value"));
}
}
}
public T PreviousValue
{
get { return _previousValue; }
}
}
Вот код привязки:
Вот трассировка стека:
в MS.Internal«.SetObjectValueToCore (DependencyProperty dp, Значение объекта) в System.Windows.DependencyObject.SetEffectiveValue (свойство DependencyProperty, EffectiveValueEntry & newEntry, Object newValue) в System.Windows.DependencyObject.Univement.Windows.DependencyObject.RefreshExpression (DependencyProperty dp) в System.Windows.Data.BindingExpression.RefreshExpression ()
в System.Windows.Data.BindingExpression.SendDataToTarget () в System.Windows.Data.BindingExpression.SourcePropertyChanged (PropertyPgsHerPhint.Ru)) при System.Windows.PropertyPathListener.RaisePropertyPathStepChanged (источник PropertyPathStep) в System.Windows.PropertyAccessPathStep.RaisePropertyPathStepChanged (источник PropertyListener) в System.Windows.CLRPropertyListener.SourcePropertyChanged (Object отправителя, PropertyChangedEventArgs арг) в System.Windows.Data.WeakPropertyChangedListener.PropertyChangedCallback(Отправитель объекта, аргументы PropertyChangedEventArgs) в RoadCast.Model.BindableType 1.set_Value(Double value) at
RoadCast.Default.locationHelper_PositionChangedMinor(Object sender,
GeoPositionChangedEventArgs
1 аргументов) в RoadCast.Core.LocationHelper.watcher_PositionChanged (Отправитель объекта, GeoPositionChangedEventArgs`1 e) в System.Device.Location> c.* DisplayClass1.b _0 (Объект _) в System.Reflection.RuntimeMethodInfo.InternalInvoke (RuntimeMethodInfo rtmi, Object obj, BindingFlags invokeAttr, Binder Binder, параметры объекта, культура CultureInfo, логическое значение isBinderDefault, вызывающая сборка, Boolean verifyAccess, StackCrawlMark & stackMark) в System.Reflection.RuntimeMethodInkeFBindInfo.Параметры Object [], CultureInfo culture, StackCrawlMark & stackMark) в System.Reflection.MethodBase.Invoke (Object obj, Object [] параметры)
в System.Delegate.DynamicInvokeOne (Object [] args) в System.MulticastDelegate.DynamicInvokeImpl (Object [] args) в System.Delegate.DynamicInvoke (Object [] args) в System.Windows.Threading.DispatcherOperation.Invoke () в System.Windows.Threading.Dispatcher.Dispatch (приоритет DispatcherPriority) в System.Windows.Threading.Dispatcher.OnInvoke (Контекст объекта) в System.Windows.Hosting.CallbackCookie.Invoke (Объект [] args) в System.Windows.Hosting.DelegateWrapper.InternalInvoke (Object [] args)
в System.Windows.RuntimeHost.ManagedHost.InvokeDelegate (IntPtr pHandle, Int32 nParamCount, ScriptParam [] pParams, ScriptParam & pResult)
ОБНОВЛЕНИЕ: переименование свойства в «InternalValue» исправило это для меня.