【问题标题】:OnElementPropertyChanged called infinely in xamarin formsOnElementPropertyChanged 以 xamarin 形式无限调用
【发布时间】:2017-06-02 18:45:00
【问题描述】:

我的 xamarin 表单应用程序中有一个自定义时间选择器渲染器

在我的渲染器中

protected override void OnElementPropertyChanged(object sender, 

    PropertyChangedEventArgs e)
            {
                base.OnElementPropertyChanged(sender, e);
                try
                {

                    if (e.PropertyName == iOSCustomTimePicker.TimeProperty.PropertyName)
                    {
                        var temp = sender as iOSCustomTimePicker;   
                        picker.Hour = temp.Time.Hours;
                        picker.Minute = temp.Time.Minutes;
                        //TimeSpan value = new TimeSpan(8, 0, 0);
                        //this.Element.SetValue(iOSCustomTimePicker.TimeProperty, value);
                    }

                }
                catch (Exception e1)
                {
                }
            }

我在 xaml 中使用它

<control:iOSCustomTimePicker x:Name="cli_staffrequest_addShiftTime_timePicker1" Grid.Column="2" Grid.Row="1" Time="{Binding ShiftEndTimeSelected}" 
          HorizontalOptions="Fill" VerticalOptions="Fill" StyleId="uit_staffHiring_addShifts__timePicker1"/>

因此,当 ViewModel 中的 ShiftEndTimeSelected 发生变化时,我会在 OnElementPropertyChanged 中受到影响并更改时间

现在我的问题是有时我在 OnElementPropertyChanged 中获得无限命中 从而无限调用垃圾收集器。如何找出问题所在。我对 xamarin Forms 完全陌生

【问题讨论】:

    标签: xamarin xamarin.forms timepicker


    【解决方案1】:

    对不起英语不好

    我认为这些台词再次引发了事件:

    base.OnElementPropertyChanged(sender, e);
    

    picker.Hour = temp.Time.Hours;
    picker.Minute = temp.Time.Minutes;
    

    如果您在事件处理程序上采用这种方式,可能不会发生这种情况(您需要测试):

    try
    {
        if (e.PropertyName == iOSCustomTimePicker.TimeProperty.PropertyName)
        {
            var temp = sender as iOSCustomTimePicker;   
            picker.Hour = temp.Time.Hours;
            picker.Minute = temp.Time.Minutes;
        }
        else
            base.OnElementPropertyChanged(sender, e);
    }
    catch (Exception e1)
    {
    
    }
    

    【讨论】:

      猜你喜欢
      • 2021-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多