【发布时间】:2020-01-15 10:02:46
【问题描述】:
我是否遗漏了什么,或者还有更多我没有得到的东西。我正在开发一个移动应用程序,并且必须使用选择器从数据表中进行选择。首先,我有许多基于键/值的选择器。我有一个内部 ID 和相应的 Show 值。 ID 并不总是具有 1、2、3 值,例如源自查找表,并且可能具有
KeyID / ShowValue
27 = Another Thing
55 = Many More
12 = Some Item
检索起来很简单
select * from LookupTable where Category = 'demo'
所以我在下面有这个类,用于通过记录列表绑定选择器
public class CboIntKeyValue
{
public int KeyID { get; set; } = 0;
public string ShowValue { get; set; } = "";
}
现在,我尝试绑定的数据记录只有与查找关联的 ID 列。无需陷入 xaml,但总的来说,我有我的 ViewModel。我有一个包含 ID 列的数据记录实例。
public class MyViewModel : BindableObject
{
public MyViewModel()
{
// Sample to pre-load list of records from data server of KVP
PickerChoices = GetDataFromServerForDemo( "select * from LookupTable where Category = 'demo'" );
ShowThisRecord = new MyDataRec();
// for grins, I am setting the value that SHOULD be defaulted
// in picker. In this case, ID = 12 = "Some Item" from above
ShowThisRecord.MyID = 12;
}
// this is the record that has the "ID" column I am trying to bind to
public MyDataRec ShowThisRecord {get; set;}
// The picker is bound to this list of possible choices
public List<CboIntKeyValue> PickerChoices {get; set;}
}
我无法绑定到列表的 INDEX,因为这会给我 0、1、2,而我希望相应的“ID”是列表中正确记录的基础。
在 WPF 中,我过去,能够为屏幕声明 SHOW 值,也可以将 BIND VALUE 与 ID 列类似。因此,我的“ShowThisRecord”上的 INT 属性绑定将驱动并正确刷新。
我可以看到 SelectedItem 的绑定,但这是 KVP 类的整个项目,它不是 MyDataRec 的一部分。只有 ID 是它们之间的共同元素。
谁能帮助指导我正确绑定以使其正常工作。
<Picker ItemDisplayBinding="{Binding ShowValue}"
SelectedItem="{Binding ???}" />
只是为了确认我的记录绑定是合法的,我的页面具有与 MyViewModel 的绑定上下文,因为我可以通过我添加到页面的示例文本条目正确地查看 ID。
<Entry Text="{Binding Path=ShowThisRecord.MyID}"/>
谢谢
【问题讨论】:
-
我认为 SelectedItem 需要是在选择器的 ItemSource 中的一个项目
标签: c# xamarin data-binding picker