MvvmCross Visibility 插件不会隐藏我的 TextView
Posted
技术标签:
【中文标题】MvvmCross Visibility 插件不会隐藏我的 TextView【英文标题】:MvvmCross Visibility plugin does not hide my TextView 【发布时间】:2019-06-28 03:29:05 【问题描述】:我正在尝试使用 MvvmCross Visibility 插件使项目不可见。我正在使用 MvvmCross 5.7 和 MvvmCross Visibility 插件 5.7。
我尝试通过布局和瑞士绑定来绑定对象的可见性。
我有一个 ViewModel,它有一个适当的 ShouldShowBackButton:
public class TabViewModel : MvxViewModel
private bool _showBackButton;
public IMvxCommand NavigateCommand => new MvxCommand(this.Act, this.CanAct);
public bool ShouldShowBackButton
get => this._showBackButton;
set
this._showBackButton = value;
this.RaisePropertyChanged(() => this.ShouldShowBackButton);
private void Act()
this.ShowViewModel<ProfileFragmentViewModel>();
private bool CanAct()
return true;
这个 ViewModel 继承自实际的 ViewModel:
public class ProfileFragmentViewModel : TabViewModel
public ProfileFragmentViewModel()
this.ShouldShowBackButton = false;
viewModel 已正确绑定到 View,我已经对其进行了测试。 这是我试图使 TextView 不可见的方式:
<TextView
android:id="@+id/testProp"
android:layout_
android:layout_
android:text="Test visibility"
local:MvxBind="Visibility Visibility(ShouldShowBackButton)" />
还有瑞士法典:
public class ProfileFragmentView : MvxFragment
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
base.OnCreateView(inflater, container, savedInstanceState);
var view = this.BindingInflate(Resource.Layout.ProfileFragmentView, null);
var backButton = view.FindViewById<Button>(Resource.Id.toolbarBackButton);
var testButton = view.FindViewById<TextView>(Resource.Id.testProp);
var set = this.CreateBindingSet<ProfileFragmentView, ProfileFragmentViewModel>();
set.Bind(testButton).For(v => v.Visibility).To(vm => vm.ShouldShowBackButton)
.WithConversion<MvxVisibilityValueConverter>();
set.Apply();
return view;
这两种方法都不会使我的 TextView 不可见。
【问题讨论】:
你能发布你的整个 ProfileFragmentView 布局文件吗? 【参考方案1】:你应该将你的属性声明为响应式
[Reactive]
public bool ShouldShowBackButton
get => this._showBackButton;
....
【讨论】:
找不到这个属性,可能是来自其他版本的MvvmCross。 @Kam 我的错,我总是将 MvvmCross 与 ReactiveUI 一起使用。注释来自后一个库 问:xmlns:local: 是否指向""schemas.android.com/apk/res-auto""? @Kam,@MihaiBC 刚刚问的解决方案是什么?添加xmlns:local="http://schemas.android.com/apk/res-auto"
时无法重现您的问题。
这是我的一个问题的解决方案。这个问题的主要解决方案是,而不是“local:MvxBind="Visibility Visibility(ShouldShowBackButton)””我使用“local:MvxBind="Visible ShouldShowBackButton"”以上是关于MvvmCross Visibility 插件不会隐藏我的 TextView的主要内容,如果未能解决你的问题,请参考以下文章
MvvmCross - '无法加载类型 Sequence.Plugins.InfiniteScroll.PluginLoader 的插件程序集'
MvvmCross picturechoosen 插件和相机卡住问题
MvvmCross.Forms - 默认 Spinner 不会退出