我有MvvmCross Xamarin Android项目,我想问一下我按钮的某些奇怪行为。

当我使用按钮打开 View 时-出现按钮,它是可见的。然后我的属性MyEnumCurrentId有时会更改-始终更改为MyEnum.OK。但是,当我在setter上中断时,我看到MyEnumCurrentId上的该属性不是最后一个(MyEnum.OK),但始终为0。

因此,我放下计数器,以检查我的模型是否还记得之前设置的属性。我注意到的是,即使counter++执行几次,我的计数器也始终为-1。

在应用程序中,我的按钮会不时消失,这就是问题所在。我认为这是因为RaisePropertyChanged(()=> MyEnumCurrentId一直在执行,因为我的属性不知道之前设置的值。

所以我的问题是为什么会这样?我应该将这些属性移动到 View 模型中,并且应该解决问题吗?

当其他 Activity 更改我正在设置的当前MyEnumCurrentId时

模型

     private int counter = -1;

     public MyEnum MyEnumCurrentId
        {
            get { return _MyEnumCurrentId; }
            set
            {
                if (counter <2)
                {
                    counter++;
                    if(value == MyEnum.OK)
                        _IsMyTextVisible = true;
                    else
                        _IsMyTextVisible = false;
                    RaisePropertyChanged(() => IsMyTextVisible);
                }
                _MyEnumCurrentId = value;

                RaisePropertyChanged(() => MyEnumCurrentId);
            }
        }


    private bool _IsMyTextVisible;

    public bool IsMyTextVisible
    {
        get{ return _IsMyTextVisible; }
        set
        {
            _logger.Info("changing property on IsMyTextVisible: "+value);
            _IsMyTextVisible = value;
            RaisePropertyChanged(() => IsMyTextVisible);
        }
    }

XML格式
<Button
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:layout_alignParentRight="true"
                local:MvxBind="Text MyText; Visible IsMyTextVisible; Typeface StringToFont('MyFont')" />

最佳答案

我不确定它在Xamarin Android中如何工作,但我认为问题是您分配的 bool 属性,其结果为 true false (在 View 模型中)
并查看您将该 bool 值分配给能见度属性,但可见度值只能设置为不可见或可见而不是true或false我希望您能得到它

关于android - 我的属性始终是MVVM模型中的默认值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31878907/

10-12 04:02
查看更多