视图层次结构中的 Mvvm 交叉绑定
MvvmCross binding in a view hierarchy
我在 Xamarin.iOS 中使用 MvvmCross 创建到自定义视图(视图层次结构)的绑定时遇到问题。
我的自定义控件显示了一些文本并且只有几个按钮。
在代码中它看起来像这样(简化版本,我最后一次尝试)
// Custom control
public class CustomView : MvxView
{
// Views
private TextFieldWithImageButton TextField;
// ...
// Properties
public string Text
{
get
{
return TextField.Text;
}
set
{
TextField.Text = value;
}
}
// ...
}
// ViewModel for Controller
public class MainViewModel : MvxViewModel
{
private string _text = "";
public string Text
{
get { return _text; }
set { _text = value; }
}
// ...
}
// ViewController
public class MainViewController : MvxViewController
{
// Views
private CustomView CustomView;
// ViewModel
public MainViewModel ViewModel;
// ... intialization and other stuff
// Binding ... called from ViewDidLoad method
private void CreateBinding()
{
var set = CustomView.CreateBindingSet<CustomView, MainViewModel>();
set.Bind(CustomView.Text).To(ViewModel.Text);
set.Apply();
}
}
但我总是得到
MvxBind: Error: 0,21 Empty binding target passed to MvxTargetBindingFactoryRegistry
和
MvxBind: Warning: 0,21 Failed to create target binding for binding for -empty-
我尝试了很多选项和教程,但到目前为止我无法正常工作。
对于我做错了什么的任何提示,我将不胜感激。
尝试以下操作:
改变这个:
set.Bind(CustomView.Text).To(ViewModel.Text);
为此:
set.Bind(CustomView).For(c => c.Text).To(vm => vm.Text);
我在 Xamarin.iOS 中使用 MvvmCross 创建到自定义视图(视图层次结构)的绑定时遇到问题。
我的自定义控件显示了一些文本并且只有几个按钮。
在代码中它看起来像这样(简化版本,我最后一次尝试)
// Custom control
public class CustomView : MvxView
{
// Views
private TextFieldWithImageButton TextField;
// ...
// Properties
public string Text
{
get
{
return TextField.Text;
}
set
{
TextField.Text = value;
}
}
// ...
}
// ViewModel for Controller
public class MainViewModel : MvxViewModel
{
private string _text = "";
public string Text
{
get { return _text; }
set { _text = value; }
}
// ...
}
// ViewController
public class MainViewController : MvxViewController
{
// Views
private CustomView CustomView;
// ViewModel
public MainViewModel ViewModel;
// ... intialization and other stuff
// Binding ... called from ViewDidLoad method
private void CreateBinding()
{
var set = CustomView.CreateBindingSet<CustomView, MainViewModel>();
set.Bind(CustomView.Text).To(ViewModel.Text);
set.Apply();
}
}
但我总是得到
MvxBind: Error: 0,21 Empty binding target passed to MvxTargetBindingFactoryRegistry
和
MvxBind: Warning: 0,21 Failed to create target binding for binding for -empty-
我尝试了很多选项和教程,但到目前为止我无法正常工作。
对于我做错了什么的任何提示,我将不胜感激。
尝试以下操作:
改变这个:
set.Bind(CustomView.Text).To(ViewModel.Text);
为此:
set.Bind(CustomView).For(c => c.Text).To(vm => vm.Text);