注:これはXamarinフォーム用です。重複と思われる質問は、実際にC#ListViewを扱うことです。Xamarinフォームリストビュー:リスト項目にコマンドを追加
私はリストビューを持っています(Mac Xamarinフォーム用のVisual Studio 2017を使用するクロスプラットフォーム)私はデータバインディングを大まかに理解していますので、 Webサービスからデータをロードする。今度は、表示された行ごとにいくつかのアクションを実行して、各アイテムのListViewにボタンを埋め込みました。私は選択された行に対して何らかの機能を実行するようにアクションを追加する方法を知ることができません。私が作成したリストビューボタンで
この方法:私の背後にあるコードで
<Button x:Name="prayUpButton" Command="{Binding _handle_prayupbutton_action}" Text="PU" Grid.Row="4" Grid.Column="0" />
は、次の方法があります:私の理解から
void handle_prayupbutton_action()
{
}
public Command _handle_prayupbutton_action
{
get { return new Command(() => handle_prayupbutton_action());
}
をあなたがしてトリガするCommand
を作成アクション。私はここで何が欠けていますか?私がvoid handle_prayupbutton_action()
にブレークポイントを置くと決してそれに当たらない。
Xamarin Formsクロスプラットフォームのリストビューにアクションを追加するには、ベストプラクティス/正しい方法は何ですか?
UPDATE 1:私はこれに以下のコードを変更:
これは私のヘッダーです:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="prayupapp.Pages.PrayersPage" x:Name="PrayersPagePage">
だから私はボタンコマンドを変更:
<Button x:Name="prayUpButton" Command="{Binding Source={x:Static local.PrayersPagePage._handle_prayupbutton_action}}" Text="Pray Up" Grid.Row="4" Grid.Column="0" />
私も作っJulipanのコマンドルーチンa Staticが提案した。リストビューが前のページからロードを停止したので、私は実際に回帰しています。私はボタンのコマンドを元のコードに戻すと(それは明らかに間違っている)、動作することがわかります。私がバインディングをやっているやり方に何か問題があります。
[ListViewでレコードを選択してコードビハインドメソッドで参照するにはどうすればよいですか?](https://stackoverflow.com/questions/47823693/how-can-i-select-a-record -in-a-listview-and-the-code-behind-meth) –
コードの背後にあるときは、Xaml.csファイルを参照していますか?バインディングを使用するには、ビューのBindingContextを別のクラス(ViewModel)に設定し、そこにコマンドを配置する必要があります。 https://developer.xamarin.com/guides/xamarin-forms/xaml/xaml-basics/data_bindings_to_mvvm/はほとんどをカバーしています –
バインドコンテキストをListViewまたはPageに設定しましたか? ItemのBindingContextは項目そのものです。したがって、アイテムセル内でバインディングを使用する場合は、アイテムレベルでバインディングプロパティにアクセスできる必要があります。わかりますか? –