我正在尝试绑定图像的src.
我试过像这样使用MvxHttpImageView
<Mvx.MvxHttpImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/iconeView"
local:MvxBind="{'ImageUrl':{'Path':'ImgSrc'}}" />
Run Code Online (Sandbox Code Playgroud)
同
public string ImgSrc
{
get {return "@res/drawable/icon.png"; }
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了其他几个ImgSrc但仍然没有任何结果.
icon.png位于我的Resources/Drawable目录中,是一个AndroidResource
任何帮助都会很棒!谢谢
绑定到Android元素上的多个属性的正确语法是什么?
我试过这样的事 local:MvxBind="{ Value StartTime, Text StartTimeText}"
其中属性StartTime和StartTime文本在ViewModel中定义,但这不起作用.值和文本是此自定义控件的属性.
ViewModel可能如下所示:
public class ViewModel
{
public DateTime StartTime{get;set;}
public string StartTimeText {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我发现了这个相关问题,但无法找到多个绑定的正确瑞士语法.有人在元素上做过多次绑定吗?
TIA.
我在哪里可以下载Visual Studio的片段,比如pf pmvx,cmvx和其他?我虽然那些可以在github项目中使用,但找不到它们......
我正在构建一个跨平台的应用程序,需要动态生成和绑定Spinner控件.我能够在iOS和Windows平台上实现这一点,但是在Android方面存在问题.如果我理解正确,我必须将一些参数传递给MvxSpinner的构造函数 - context和attrs,但是我无法弄清楚我该怎么做以及应该在那里传递什么.另外,我不知道如何绑定ItemsSource和SelectedItem.我想必须创建一个新的绑定集(类似于iOS版本),但我无法在Android上找到它.你能告诉我一些指示吗?
这是我的Windows版源代码:
private void InputColourAtlasChangedMessageHandler( InputColourAtlasChangedMessage message )
{
ColourAtlas selected = message.SelectedColourAtlas;
var vm = ViewModel as ColorMatchViewModel;
List<ComboBox> newComboboxes = new List<ComboBox>();
var currentCount = ColourPickersContainer.Children.Count;
for ( int i = currentCount; i < message.ColourCodePartCount; i++ )
{
ComboBox cb = new ComboBox { Margin = new Thickness( 0, 0, 10, 0 ), PlaceholderText = "choose" };
Binding itemsSourceBinding = new Binding();
itemsSourceBinding.Path = new PropertyPath( "ColourPartLists[" + i + "]" );
Binding …Run Code Online (Sandbox Code Playgroud) 针对iOS 8.1
我正在使用AutoLayout在TableCell中布置一些标签.其中一些标签是可选的,有些可以包装它们的文本.它们分为两个"列",这些列只是TableCell的ContentView中的两个UIView.我的约束以编程方式应用.
第二次更新
如果没有SwiftArchitect的答案,我就不会解决这个问题并接受了他的回答.但是因为我的所有代码都在自定义的tablecell中,所以我在下面还添加了一个单独的答案
UPDATE
在试图从伸展到比他们需要的是我以前设定的扩大停止标签SetContentHuggingPriority,并SetContentCompressionResistancePriority以1000作为我belived这是说相当于" 我希望标签的内容拥抱它的确切高度和我不希望它被垂直压缩 "AutoLayout显然没有遵守此请求,您可以在下面的红色和粉红色示例中看到.
this.notesLabel.SetContentHuggingPriority(1000, UILayoutConstraintAxis.Vertical);
this.notesLabel.SetContentCompressionResistancePriority(1000, UILayoutConstraintAxis.Vertical);
Run Code Online (Sandbox Code Playgroud)
我删除了这些优先级的设置,标签不再被压扁,这是我原来的问题.当然,现在某些标签已经超出了他们需要的高度.
下面是一些屏幕截图,介绍了压缩和拥抱优先级设置时的效果.背景颜色用于调试
一般的问题是包含视图(彩色紫色和红色)正在测量两者中较小的一个.正如你在前面看到的那样,"优先级3"正在被削减,因为左列容器不需要更高.
在下一个示例中,没有Priority标签,但EventDate正在被压缩.
如何为绑定添加格式,使用string.Format或类似的东西格式化绑定值?我在其他线程中看到,您可以传递一个converterName.
我很快浏览了代码,但找不到任何东西.我知道可能会发生信息丢失,这会破坏双向绑定,但我只想要这个来显示值.我的具体案例是DateTime的绑定.
bindings.Bind(purchaseDate).To(vm => vm.RegisteredDevice.PurchaseDate);
Run Code Online (Sandbox Code Playgroud)
我的愿望,例如:
bindings.Bind(purchaseDate).To(vm => vm.RegisteredDevice.PurchaseDate).WithFormat("hh:mm");
Run Code Online (Sandbox Code Playgroud) 我试图了解ViewModels和Service类的实例化,并将其写入其他人.请在需要的地方更正/添加.
ViewModels和Services的实例化不是以最常见的方式完成的.它是用反射完成的.
在TipCalc中你有:
public class FirstViewModel : MvxViewModel
{
private readonly ICalculationService _calculationService;
public FirstViewModel(ICalculationService calculationService)
{
_calculationService = calculationService;
}
...
}
Run Code Online (Sandbox Code Playgroud)
和
public class App : Cirrious.MvvmCross.ViewModels.MvxApplication
{
public override void Initialize()
{
CreatableTypes()
.EndingWith("Service")
.AsInterfaces()
.RegisterAsLazySingleton();
...
}
}
Run Code Online (Sandbox Code Playgroud)
在Initialize()期间,设计为Service的接口和类(名称以Service结尾)使用反射以及接口名称和类名称(IPersonService和PersonService)进行配对.这稍后用于反向查找类的实例(查找表包含对服务类的单例实例的延迟引用.服务在null时创建.
public FirstViewModel(ICalculationService calculationService)引用CalculationService的实例.这是通过使用先前创建的查找表来完成的.
ViewModels的实例化是通过Mvx框架完成的.当"询问"MvxFramework实例化的ViewModel时,它将反映ViewModel并确定该类上的构造函数.如果有一个无参数构造函数,那么将使用它.如果存在带参数的构造函数且参数是服务类的接口,则该服务的(单例)实例将用作参数.
服务以类似的方式实例化; 他们的构造函数反映和参数实例化(单例).等等.
xamarin.ios xamarin.android windows-phone mvvmcross windows-store-apps
我正在尝试使用带有CommandParameter的 fire MvxCommand,但遇到以下问题:MyView.axml包含:
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button1"
local:MvxBind="Click MyCommand, CommandParameter=foo" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button2"
local:MvxBind="Click MyCommand, CommandParameter=bar" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
MyViewModel.cs:
public class MyViewModel : MvxViewModel
{
public ICommand MyCommand { get; private set; }
public MyViewModel()
{ // param is null
MyCommand = new MvxCommand<string>(param =>
{
if (param == "foo")
{
// do something
}
else if (param == "bar")
{
// do something else
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我检查param变量为 …
让我说我有一个简单的布局与MvxListView:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res/LiivControl.Client.Droid"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Mvx.MvxListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
local:MvxBind="ItemsSource AutoListItems; ItemClick AutoListItemClicked"
local:MvxItemTemplate="@layout/vbmvxautoviewlistitem" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我的项目模板布局如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res/LiivControl.Client.Droid"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="10dip"
android:paddingBottom="10dip"
android:paddingLeft="15dip">
<TextView
android:id="@+id/list_complex_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/list_complex_caption"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我想从代码隐藏中为itemtemplate中的两个textview元素指定绑定.我不确定如何最好地去做.我猜我可以在MvxListView后面的视图代码中做一些"OnViewModelSet".我尝试过以下但是因为它无法找到控件而显然无效.
protected override void OnViewModelSet()
{
IVbMvxAutoListViewModel vm = base.ViewModel as IVbMvxAutoListViewModel;
TextView title = this.FindViewById<TextView>(Resource.Id.list_complex_title);
this.CreateBinding(title).For(x => x.Text).To(vm.ListItemDescriptor.TitlePropName).Apply();
TextView subTitle = this.FindViewById<TextView>(Resource.Id.list_complex_caption);
this.CreateBinding(subTitle).For(x => x.Text).To(vm.ListItemDescriptor.SubTitlePropName).Apply();
base.OnViewModelSet();
}
Run Code Online (Sandbox Code Playgroud)
我的另一个想法是以某种方式拦截itemtemplate视图的oncreate,但如果我为itemtemplate布局创建一个视图代码文件,则不会调用OnCreate.
我正在构建我的第一个Xamarin MvvmCross应用程序,目前我正在考虑验证用户对视图模型的输入.
对这个插件进行大量搜索(包括MvvmCross团队)链接:
这个插件使用了很老版本的MvvmCross v3.我已经尝试从这个插件中获取代码并将其直接构建到我的应用程序Core项目中,直到我遇到Bindings的变化.然后我得出结论,这个插件实际上需要完全重写,因为这样才能使用最新版本的MvvmCross.
所以我现在有点卡住了.
目前推荐的在视图模型中执行输入验证的最佳方法是什么?
mvvmcross ×10
binding ×4
android ×3
xamarin.ios ×3
mvvm ×2
autolayout ×1
c# ×1
command ×1
format ×1
ios ×1
spinner ×1
uitableview ×1
validation ×1
xamarin ×1