自定义标题栏中的MvvmCross绑定

And*_* N. 2 android mvvmcross xamarin

我想为活动设置自定义标题栏,标题栏有一个绑定到活动视图模型中的命令的按钮.

不知怎的,我并不感到惊讶它没有用.

是否有可能使其有效?

代码:

MainView.cs:

[Activity]
public class MainView : MvxActivity
{
    protected override void OnCreate (Bundle savedInstanceState)
    {
       this.RequestWindowFeature(WindowFeatures.CustomTitle);
       base.OnCreate (savedInstanceState);
       this.Window.SetFeatureInt(WindowFeatures.CustomTitle, Resource.Layout.MainWindowTitle);
       SetContentView(Resource.Layout.MainView);
    }
}
Run Code Online (Sandbox Code Playgroud)

MainWindowTitle.axml:

<?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-auto"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
        <ImageButton
        android:id="@+id/search"
        android:src="@drawable/magnify"
        local:MvxBind="Click SearchCommand" />
    </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

MainViewModel.cs

 public class MainViewModel : MvxViewModel
    {
          public IMvxCommand SearchCommand { get; private set; }
          ....
    }
Run Code Online (Sandbox Code Playgroud)

Stu*_*art 6

我不熟悉这个功能......但这里有一些建议:


如果它只是窗口标题,那么你不能只绑定以下活动Title:

   this.CreateBinding().For("Title").To<FirstViewModel>(vm => vm.Title).Apply();
Run Code Online (Sandbox Code Playgroud)

有没有办法将窗口的自定义标题设置为视图而不是ID?如果有,那么你可以this.BindingInflate(id)在将xml传递给窗口之前使用它来膨胀(不知道是否可能 - 但是Android - 在运行时更改自定义标题视图对内部黑客有一些有趣的建议......)


如果上面的黑客行为不起作用,那么你将不得不求助于如何在android中动态设置自定义标题栏TextView Value的技巧 - 使用它你可以做类似的事情:

   // set up your custom window here using non-binding axml with an @+id/myTitle
   Window.SetFeatureInt(WindowFeatures.CustomTitle, Resource.Layout.MainWindowTitle);

   var myTitleText = FindViewById<TextView>(Resource.Id.myTitle);
   this.CreateBinding(t).To<FirstViewModel>(vm => vm.Title).Apply();
Run Code Online (Sandbox Code Playgroud)

我认为这样可行......虽然不确定它在多个活动的整个生命周期中是如何工作的 - 猜测可能会有一些游戏/实验要做.

(此问题和答案 - Android - 在运行时更改自定义标题视图 - 还建议其他方法来获取自定义标题中的视图/小部件)