私はPCLプロジェクトのXamarin.Formsで作業しています。どのXamarinフォームエントリがListViewで変更されたかを知るには?
ListViewコントロールがあるページ/画面があります。 ViewCell用のカスタムDataTemplateを作成しました。
このViewCellは、いくつかのラベル、1つのボタン、1つのエントリを持っています。私は達成できないんだけど、このエントリ制御と二つのことを達成したい
<ListView x:Name="lvProducts" >
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout BackgroundColor="#FFFFFF" Orientation="Vertical">
<Grid Padding="5">
...
<Button Grid.Row="0" Grid.Column="1" Text="X"
CommandParameter="{Binding MarkReference}"
Clicked="DeleteItemClicked" />
...
<StackLayout Grid.Row="2" Grid.ColumnSpan="2" Orientation="Horizontal" >
<Label Text="Ref.: " FontSize="24" FontAttributes="Bold" TextColor="#000000" />
<Label Text="{Binding Reference}" FontSize="24" TextColor="#000000" />
</StackLayout>
...
<Entry Grid.Row="3" Grid.Column="1" Text="{Binding NumElements}"
Keyboard="Numeric" Placeholder="" FontSize="24"
HorizontalTextAlignment="Center" Focused="OnItemFocus"
Unfocused="OnItemUnfocus" />
</Grid>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
:
まず、私は新しい項目を追加するとき、私はこの新しいアイテムがフォーカスを彼のエントリを持つことを希望、入力を開始する準備が整いました。
第2に、ユーザーがエントリに値を書き込むために終了すると、後ろの値を変更したいと思います。 ListViewのどのエントリが変更されたのか知りたい。私はUnfocusedイベントを使用しようとしましたが、起動するメソッドのパラメータにはEntryオブジェクトを返す送信側パラメータのみがバインドされたモデルについての参照はありません。
public void OnItemUnfocus(object sender, EventArgs e)
{
Entry entry = (Entry)sender;
//Here I would like to know the model object that's binded
//with this Entry/CellView item
}
どのようにこれらの2点を達成できますか?私はあなたが行動を使用することをお勧めしたいと思い
をセル内で 'OnBindingContextChanged'をオーバーライドし、' var object =(YourClass)BindingContext'でオブジェクトを取得することができます。これにより、必要に応じてデータソース内のオブジェクトにアクセスできます。 – markusian
@markusianありがとう、私はあなたの考えを持って、私はそれを使用しています。私はEntryコントロールを拡張し、Unfocusedイベントに使用しました。正常に動作します。 – stivex