私はXFリストビューを使用していますが、オブジェクト全体をバインドしてコンバーターを使用していくつかの条件に基づいてデータをフォーマットしたいのですが、オブジェクトバインディングはXFではもう機能しません。テストはXF 2.5.0.91635、アンドロイドサポートライブラリ26.1.0.1で行われます。オブジェクトバインドが機能しません
<ListView x:Name="lv"></ListView>
しかし、項目テンプレートを使用した場合、何も表示されないの数が、:コンテンツは、デフォルトのオブジェクトの文字列を示しているもののまず、とき、リストビューが正しくレンダリングされる、項目テンプレートを使用していませんアイテムは実際にリストビューで追加され、アイテム選択されたイベントは正しく起動されます。また、デバッグ出力はメッセージ次:
<ListView x:Name="lv">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding}"></Label>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
[0:] Binding: Models.DataItem can not be converted to type 'System.String'
[0:] Binding: Models.DataItem can not be converted to type 'System.String'
[0:] Binding: Models.DataItem can not be converted to type 'System.String'
[0:] Binding: Models.DataItem can not be converted to type 'System.String'
[0:] Binding: Models.DataItem can not be converted to type 'System.String'
を私はバインディング式にコンバータを追加する際に、変換関数は常にその引数にnullを受けます。
はバインディングのコードを追加します。
例えば:
private ObservableCollection<Models.DataItem> _dataList;
public ObservableCollection<Models.DataItem> DataList
{
get { return _dataList; }
set
{
_dataList = value;
RaisePropertyChanged(() => DataList); // you can use your own property notification mechanism here.
}
}
次に設定した後にバインドする
List<DataItem> list = new List<DataItem>();
for(int i = 0; i < 10; i++)
{
list.Add(new DataItem
{
N = "L " + i.ToString(),
C = i + 1,
});
}
lv.ItemsSource = list;
ありません何が起こっているか完全に確かめていますが、この ''のように定義することを正しく理解していますか?通常、 ''のように定義します。ここで、 'PropertyOnModel'はデータバインドモデルのプロパティか、少なくとも' 'モデルオブジェクト全体にバインドします。これで問題は解決しますか? –
ええ、プロパティへのバインディングは動作しますが、意図的にオブジェクト全体にバインドしてコンバーターに渡したいと思うので、 '{Binding。} 'や' {Binding Path =。} '。 – fluter