如果我知道资源的名称,我怎么能返回资源的id?
像这样的东西:
String mDrawableName = "myappicon";
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());
Run Code Online (Sandbox Code Playgroud) 我现在正在探索Monotouch(Xamarin)与其他解决方案(如Monocross)的功能吗?
所以任何人都可以解释何时使用Monotouch以及何时使用Monocross.
这些框架与本机应用程序开发的优点和缺点是什么?
标题说明了一切.根据您的经验,两个框架之间的关键区别是什么?当我们应该使用一个而不是另一个?
预期用途:跨平台开发(Windows 8,iOS,Android,WindowsRT,Mac).
从非视图中打开mvvmcross中的View的正确方法是什么?在视图模型中,我们将使用ShowViewModel <>(..).
具体来说,我们正在响应推送通知打开应用程序(使用自定义有效负载),该通知指示应加载的视图.
我们有一个简单的解决方法只是为了概念验证,只是想了解正确的MVX方法
我找不到可供使用的所有类型粘合剂的列表,最近发现了一个关于本地的同事:MvxBind ="可见性属性",这对我们的代码有很大帮助.我相信MvvMCross有很多隐藏的宝石,我们还不知道.信息是否可以在某处获得?
我们知道的粘合剂:
谢谢!
在mvvmcross v3 ViewModel中
public class TimerViewModel : MvxViewModel
{
System.Timers.Timer timer;
public TimerViewModel()
{
timer = new System.Timers.Timer(500f);
timer.Elapsed += HandleTimerElapsed;
timer.Start();
}
void HandleTimerElapsed (object sender, ElapsedEventArgs e)
{
Debug.Log( "Time Elapsed" );
}
}
Run Code Online (Sandbox Code Playgroud)
由于MvxViewModel没有实现IDisposable,我应该在哪里放置以下代码?
timer.Stop();
timer.Elapsed += HandleTimerElapsed;
Run Code Online (Sandbox Code Playgroud)
我发现mvvmcross代码有一些MvxWeakEventSubscription,它用于解决我的问题吗?
我有一个ViewModel,它包含一个Team,它有一个Players属性,它是一个Player对象列表.在TeamView中,Team是深度加载的,因此播放器数据已经在内存中.
将给定的选定Player类实例传递给PlayerView的最佳方法是什么?
问题是MVVMCross ViewModel构造函数只能包含当前版本的字符串属性.
我有以下想法:
传递所选Player的Id并将Team.Players属性作为ViewModel分配给PlayerView.如果所选择的玩家只是PlayerView中的焦点玩家并且PlayerView实际上是"玩家"视图,那么这可以是合理的解决方案,其中用户也可以在其他团队玩家之间滑动.
有一个像ViewBag服务这样的ASP.Net MVC只能在导航动作之间传递数据,在类似存储的字典中,传递给PlayerView的参数是一个"viewbag:PlayerId123",它是一个指向类实例的特殊键.
将所选对象序列化为字符串,并将其作为序列化对象传递给构造函数.这是可能的,但我不喜欢这个解决方案.
在MvvmCross v3中,我使用ShowViewModel导航到不同的页面.在转换为Mvx之前,我将使用该NavigationService.GoBack()方法返回上一页.优点是不重新创建页面.
由于该GoBack方法是特定于WP,WInRT,Silverlight的平台,处理返回上一页的最佳方法是什么,因此视图模型保持平台无关?
一种解决方案可能是使用ShowViewModel传递视图可以看到的一些数据,然后在WP/WinRT的情况下,RemoveBackEntry从视图调用.但是对于Mvx,可能有更好的方法.
由于我的用户界面通常需要具有本地化字符串,因此我的视图模型提供了视图所使用的所有字符串.这包括按钮上的标题等内容.
在iOS端,按钮标题通过SetTitle方法设置.
为了使视图模型string =>按钮标题映射起作用,MvvmCross会进行一些神奇的绑定转换,以使其正常工作.
假设我的视图中有一个名为Foo的UIButton,我想将其标题映射到View Model中的属性ButtonLabel.知道以下工作以设置这样的绑定:
this.AddBindings(new Dictionary<object, string>() {
{Foo, "Title ButtonTitle"}
});
Run Code Online (Sandbox Code Playgroud)
可以使用MvvmCross中的Fluent Binding系统设置相同的绑定吗?我一直在阅读MvvmCross源代码,但我并没有得到绑定代码.
以下内容不起作用(因为实际上按钮没有Title属性 - 它有一个SetTitle方法):
var set = this.CreateBindingSet<FooView, FooViewModel>();
set.Bind(Foo).For(b => b.Title).To(vm => vm.ButtonTitle);
set.Apply();
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以使用Fluent Bindings获得所需的结果?
在ViewModel,我有Save检查isValid属性的方法.
如果isValid是false,那么我想显示一条错误消息.
由于AlertDialog是特定于平台,我想知道你如何处理这种情况ViewModel?
public void Save()
{
if (isValid)
{
OnExit(this, null);
}
else
{
//issue an alert dialog here
}
}
Run Code Online (Sandbox Code Playgroud)
更新
我使用了以下插件并添加了以下代码行,如下所示,但它会引发错误.
else
{
Mvx.Resolve<IUserInteraction>().Alert("it is not valid");
}
Run Code Online (Sandbox Code Playgroud)
更新2
Chance.MvvmCross.Plugins.UserInteraction 是命名空间,但它用作类型错误.
更新3
我添加了Acr.UserDialogs插件并调用如下,但我有同样的错误.
Mvx.Resolve<IUserDialogs>().Alert("it is not valid");
Run Code Online (Sandbox Code Playgroud)
mvvmcross ×10
c# ×6
xamarin.ios ×3
xamarin ×2
android ×1
mono ×1
monocross ×1
mvvm ×1
reactiveui ×1