私はリストリストのItemsSourceでリストビューを持ち、DataTemplateはエントリセルのテキストです。入力セルをクリックして入力を開始すると、入力時に変更が加えられているのがわかりますが、ListView外の入力要素をクリックすると、変更が失われます。私ものviewmodelXamarin.Forms EntryCellは、最初にセルがフォーカスを失うと値を失います。
public List<string> Players { get; }
だけでプレーヤーのためのプロパティを定義
Players = new List<string>();
Players.Add("test1");
Players.Add("test2");
:私は最初の要素を追加し、コンストラクタに次のコードを持っているのviewmodelで
<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>
それが起こる時間は、プレイヤーの数の横にある入力ボックスをクリックするのが初めてです。空のスペースをクリックすると、選択したリストビュー項目の青い枠線が消えるのがわかりますが、値は変更されたままですが、項目をクリックするとリストビューのエントリセルの値はその元の値。
WPFで似たようなことが起こったようですが、これは私のバインディングにUpdateSourceTrigger = PropertyChangedを追加するだけで対応しました。限り、私が知っている限り、Xamarin.Formsのものではありません(少なくともまだ)。
リストビューに最初に入力した値をどのように保つことができますか?
私が作業しているファイルは、Xamarin.Forms Portableクラスライブラリにあり、Universal Windows(UWP)ビルドを使用してテストしています。
双方向バインディングを試しましたか? –
はい、動作しませんでした。 –