【发布时间】:2016-10-22 11:58:33
【问题描述】:
我有一个列表视图,其中包含一个字符串列表的 ItemsSource,而 DataTemplate 是一个条目单元格文本,它绑定到该字符串。如果我单击输入单元格并开始输入,我可以看到我在输入时所做的更改,但是一旦我单击 ListView 之外的输入元素,我的更改就会丢失。
<StackLayout Orientation="Horizontal">
<Label>Number of Players</Label>
<Entry Text="3" />
</StackLayout>
<ListView Header="Players" ItemsSource="{Binding Players}">
<ListView.ItemTemplate>
<DataTemplate>
<EntryCell Text="{Binding .}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
在视图模型中,我在构造函数中有以下代码,它添加了初始元素:
Players = new List<string>();
Players.Add("test1");
Players.Add("test2");
我还在视图模型中定义了 Players 的属性
public List<string> Players { get; }
唯一一次是我第一次点击玩家数量标签旁边的输入框。如果我单击空白区域,我可以看到所选列表视图项的蓝色边框消失,但该值仍然是我将其更改为的值,但只要我单击条目,列表视图中条目单元格的值就会恢复为它们的原始值。
我觉得我在 WPF 中遇到过类似的事情,我只是通过将 UpdateSourceTrigger=PropertyChanged 添加到我的绑定来响应。据我所知,这不是 Xamarin.Forms 中的事情(至少现在还没有)。
有什么想法可以保留输入到列表视图中的第一个值吗?
我正在处理的文件位于 Xamarin.Forms 可移植类库中,我正在使用通用 Windows (UWP) 构建对其进行测试。
【问题讨论】:
-
你试过双向绑定吗?
-
是的,没用。
标签: listview xamarin xamarin.forms uwp