我有MvvmCross Xamarin Android项目,我想问一下我按钮的一些奇怪行为。
当我打开我的视图时,按钮 - 按钮出现并且可见。然后不时我的属性MyEnumCurrentId正在改变 - 总是改为MyEnum.OK。然而,当我在setter上放置break时,我在MyEnumCurrentId之前看到的那个属性不是最后一个(MyEnum.OK),但它总是为0.
所以我把计数器检查我的模型是否记得以前设置的属性。我注意到我的计数器始终为-1,即使计数器++执行几次也是如此。
在应用程序中,我的按钮会不时消失,这就是问题所在。我认为这是因为RaisePropertyChanged(()=> MyEnumCurrentId总是在执行,因为我的属性不知道它们之前设置的值。
所以我的问题是为什么会发生这种情况?我应该将这些属性移动到查看模型并且应该解决问题,还是?
当其他活动改变当前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);
}
}
<Button
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_alignParentRight="true"
local:MvxBind="Text MyText; Visible IsMyTextVisible; Typeface StringToFont('MyFont')" />
答案 0 :(得分:0)
我不确定它在Xamarin Android中是如何工作的,但我认为问题是你指定 bool 属性,其结果为 true 或 false (在视图模型中) 并且在视图中您将bool值分配给可见性属性,但是可见性值可以设置为仅Invisible或Visible不为true或false我希望您得到它