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