我有一个listview,并将从数据库获取的值绑定到我的XAML。我现在将一个值绑定到我的XAML中,但我希望绑定两个值,是可能还是只能在代码中?如果是这样,我将如何实现这一目标。
这是我的代码:
public class items
{
public string infoOne { get; set;}
public string infoTwo { get; set;}
}
async void loadList ()
{
var getItems = await phpApi.getEvents ();
theList = new List <items> ();
foreach (var currentitem in getItems["results"]) {
theList.Add (new items () {
infoOne = currentitem ["name"].ToString (),
infoTwo = currentitem ["phone"].ToString ()
});
mylist.ItemsSource = theList;
}
XAML:
<Label Text = "{Binding infoOne}" /> //How could I add infoTwo to the same label and also add a space between them?
答案 0 :(得分:5)
不幸的是,这不支持(但是?)。正如Pheonys所说,你可以在WPF中执行此操作,但不能在Xamarin.Forms中执行此操作。
如果要绑定到一个ViewModel中的两个属性,则应创建另一个属性,如下所示:
<Label Text = "{Binding infoFull}" />
只需将您的商品类更改为此。
您的XAML将是这样的:
{{1}}
答案 1 :(得分:0)
您可以添加get-only属性并绑定到该属性。
public string combinedInfo { get; } = $"{infoOne} {infoTwo}";
答案 2 :(得分:0)
做出一些假设(因为我没有在Xamarin中播放),在WPF XAML中你可以使用多绑定类和字符串格式化器。
这样做的一个例子可以在这个堆栈溢出问题的答案中找到:How to bind multiple values to a single WPF TextBlock?
答案 3 :(得分:0)
没有对MultiBinding的内置支持,但您可以使用Xamarin.Forms.Proxy库来实现它。
<Label.Text>
<xfProxy:MultiBinding StringFormat="Good evening {0}. You are needed in the {1}">
<Binding Path="User" />
<Binding Path="Location" />
</xfProxy:MultiBinding>
</Label.Text>
答案 4 :(得分:0)
您是否尝试过以下操作?
public class items
{
public string infoOne { get; set;}
public string infoTwo { get; set;}
public string infoOneAndinfoTwo {get; set;}
}
async void loadList ()
{
var getItems = await phpApi.getEvents ();
theList = new List <items> ();
foreach (var currentitem in getItems["results"]) {
theList.Add (new items () {
infoOne = currentitem ["name"].ToString (),
infoTwo = currentitem ["phone"].ToString (),
infoOneAndinfoTwo = infoOne + " " + infoTwo
});
mylist.ItemsSource = theList;
}
XAML:
<Label Text = "{Binding infoOneAndinfoTwo}" />