android - 我的属性始终是MVVM模型中的默认值

标签 android mvvm xamarin mvvmcross

我有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/

相关文章:

java - Android应用程序ActivityThread中的RuntimeException未能找到一些来源?

java - 如何将 Canvas 绘图转换为图像然后在屏幕上拖动它?

java - 如何动态更改状态栏中的文本

wpf - 异步在MVVM中添加标签

Android 5.0外设模式,如何将数据添加到扫描响应

wpf - 设置 WpfToolkit 数据网格列编辑样式

c# - 使用具有不同类型详细信息的主从 View

ios - Xamarin中如何正确的给CBPeripheralManager添加服务

ios - 启动 Xamarin iOS 应用程序失败并显示日志消息 "An error occurred searching types for the given assembly"

xamarin - 错误 CS0103 : The name 'InitializeComponent' does not exist in the current context