我想使用Android。对话框(Cross.UI
)在我的MvvmCross项目。我的第一个方法是使用AutoViews。因为这个功能还很年轻,所以另一种选择是实现触屏对话框和Droid平台。
现在我只是为Droid这样做,我需要通过编程将ViewModel的属性绑定到对话框的元素。
我的View和ViewModel代码如下:
<<h2>视图/h2> public class DialogConfigurationView : MvxBindingDialogActivityView<DialogConfigurationViewModel>
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
DroidResources.Initialise(typeof(Resource.Layout));
Root = new RootElement()
{
new Section("Private Configuration")
{
new EntryElement("Name:"),
new EntryElement("Description:"),
new BooleanElement("Active?")
}
};
}
}
ViewModel
public class DialogConfigurationViewModel : MvxViewModel
{
public ConfigurationSet Configuration
{
get { return _configuration; }
set
{
if (_configuration != value)
{
_configuration = value;
RaisePropertyChanged(() => Configuration);
}
}
}
private ConfigurationSet _configuration;
}
我的目标是有一个双向绑定的EntryElement("Name:")
与属性ViewModel.Configuration.Name
。
我不知道是否有单机器人。对话框mvvmcross样本浮动其中不使用自动视图!
然而…绑定的基本语法应该与MonoTouch相同。对话-例如:
new Section("Contact Info")
{
new StringElement("ID", ViewModel.Customer.ID ?? string.Empty),
new EntryElement("Name", "Name").Bind(this, "{'Value':{'Path':'Customer.Name'}}"),
new EntryElement("Website", "Website").Bind(this, "{'Value':{'Path':'Customer.Website'}}"),
new EntryElement("Primary Phone", "Phone").Bind(this, "{'Value':{'Path':'Customer.PrimaryPhone'}}"),
},
new Section("Primary Address")
{
new EntryElement("Address").Bind(this, "{'Value':{'Path':'Customer.PrimaryAddress.Street1'}}"),
new EntryElement("Address2").Bind(this, "{'Value':{'Path':'Customer.PrimaryAddress.Street2'}}"),
new EntryElement("City").Bind(this, "{'Value':{'Path':'Customer.PrimaryAddress.City'}}"),
new EntryElement("State").Bind(this, "{'Value':{'Path':'Customer.PrimaryAddress.State'}}"),
new EntryElement("Zip").Bind(this, "{'Value':{'Path':'Customer.PrimaryAddress.Zip'}}"),
},
从https://github.com/slodge/MvvmCross/blob/vnext/Sample%20-%20CustomerManagement/CustomerManagement/CustomerManagement.Touch/Views/BaseCustomerEditView.cs 请注意,在MonoTouch和MonoDroid的MvvmCross绑定中,文本编辑框之类的默认绑定通常是默认的TwoWay
。
如果你得到一个样本运行,然后请随意发布到一个要点或一个repo -或博客关于它-看起来我们可以做一些样本的工作!