gpt4 book ai didi

c# - 将属性绑定(bind)到 Android 中的 mvxBindableListView

转载 作者:行者123 更新时间:2023-11-30 03:59:07 26 4
gpt4 key购买 nike

我在尝试使用 MVVMCross 和 Android 绑定(bind) mvxBindableListView 中对象的属性时遇到问题。

接下来是类的结构:

public class A 
{
public string MyPropertyA1 { get; set; }
public int MyPropertyA2 { get; set; }
}
public class B
{
public int MyPropertyB1 { get; set; }
public int MyPropertyB2 { get; set; }
}

public class C
{
public int MyPropertyC1 { get; set; }
public A MyPropertyA { get; set; }
public B MyPropertyB { get; set; }
}

mvxBindableListView 是这样的:

<?xml version="1.0" encoding="utf-8"?>
<Mvx.mvxBindableListView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res/Android.Client"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
local:MvxBind="{'ItemsSource':{'Path':'Results'}}"
local:MvxItemTemplate="@layout/detail_viewmodel" />

结果是:public ObservableCollection Results { get;放; }detail_viewmodel 是:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res/Android.Client"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="6dip"
android:layout_marginTop="6dip"
android:textAppearance="?android:attr/textAppearanceLarge"
local:MvxBind="{'Text':{'Path':'MyPropertyA.MyPropertyA1'}}" />

当应用程序运行时,它向我显示 mvxBindableListView 以及包含变量“Results”的元素数,但行是空的。

有人知道这是怎么回事吗?谢谢

最佳答案

我尝试将 Tutorial 应用程序更改为使用电子邮件:

    public class Thing
{
public string Life { get; set; }

public Thing()
{
Life = Guid.NewGuid().ToString();
}
}

public class SimpleEmail
{
public Thing MyThing { get; set; }
public string From { get; set; }
public string Header { get; set; }
public string Message { get; set; }

public SimpleEmail()
{
MyThing = new Thing();
}
}

以及要包含的模板:

<TextView
android:id="@+id/email_header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="6dip"
android:layout_marginTop="6dip"
android:layout_toRightOf="@id/email_from"
local:MvxBind="{'Text':{'Path':'MyThing.Life'}}"
/>

这表明 Guid 很好。

看你的代码,因为你的模型不支持INotifyPropertyChanged,那我想知道你是不是在绑定(bind)之前设置了ViewModel的属性?

要解决这个问题,我可能会尝试:

public class A 
{
public string MyPropertyA1 { get; set; }
public int MyPropertyA2 { get; set; }
}
public class B
{
public int MyPropertyB1 { get; set; }
public int MyPropertyB2 { get; set; }
}

public class C
{
public int MyPropertyC1 { get; set; }
public A MyPropertyA { get; set; }
public B MyPropertyB { get; set; }
public C()
{
MyPropertyA = new A() { MyPropertyA1 = "TestValue" };
}
}

如果您的应用随后显示“TestValue”,那么您就知道绑定(bind)正在运行。

如果您随后需要显示正确的值,您有两种选择:

  1. 在将 View 绑定(bind)到数据之前设置属性
  2. 不知何故,绑定(bind)链上的某处发出 INotifyPropertyChange 事件信号,以便绑定(bind)知道它必须刷新

关于c# - 将属性绑定(bind)到 Android 中的 mvxBindableListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12825121/

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