gpt4 book ai didi

android - 自定义标题栏中的MvvmCross绑定(bind)

转载 作者:太空狗 更新时间:2023-10-29 16:20:17 26 4
gpt4 key购买 nike

我想为 Activity 设置自定义标题栏,标题栏有一个按钮绑定(bind)到 Activity View 模型中的命令。

不知何故,我对它不起作用并不感到惊讶。

有可能让它发挥作用吗?

代码:

主视图.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);
}
}

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>

MainViewModel.cs

 public class MainViewModel : MvxViewModel
{
public IMvxCommand SearchCommand { get; private set; }
....
}

最佳答案

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


如果它只是窗口标题,那么你能不能像这样绑定(bind) Activity Title:

   this.CreateBinding().For("Title").To<FirstViewModel>(vm => vm.Title).Apply();

有什么方法可以将窗口的自定义标题设置为 View 而不是 id?如果有,那么您可以使用 this.BindingInflate(id) 在将 xml 传递到窗口之前对其进行膨胀(不知道这是否可能 - 但 Android - change custom title view at run time 对内部黑客攻击有一些有趣的建议。 ..)


如果上述黑客攻击不起作用,那么您将不得不求助于 how to set custom title bar TextView Value dynamically in android? 等技术- 使用它你可以做类似的事情:

   // 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();

我认为这会奏效......虽然不确定它在多个 Activity 的生命周期中如何运作 - 猜测可能需要进行一些游戏/实验。

(这个问题和答案 - Android - change custom title view at run time - 还提出了在自定义标题中获取 View /小部件的其他方法)

关于android - 自定义标题栏中的MvvmCross绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16967504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com