2016-04-24 15 views
1

私の悪い英語を申し訳ありません。双方向に設定結合モードでバインディングitemSource List in Mode = TwoWay

ItemsSource="{x:Bind ViewModel.Images,Mode=TwoWay}" 

In ViewModel I have a list of Images : 

    public List<Image> Images 
    { 
     get { return _images; } 
     set 
     { 
      _images = value; 
      base.RaisePropertyChanged(); 
     } 
    } 

、私は次のエラーを持っている:私は、リストビューのitemsourceに画像のリストをバインドしようとしました

Invalid binding path 'View Model.Reports': You can not associate the type 'System.Collections.Generic.List (posytron.epart.uwp.Models.DOM.Report)' to 'System.Object' without a converter 

私は一方向への結合モードを設定した場合、それは動作します!

私はすでにブール値を可視性属性に変換するコンバータを開発しました。

コンバータにはどのようなものが含まれていますか?誰か助けてくれますか?このエラーが発生するのはなぜですか?

ありがとうございました!

+0

ListView xamlとモデルクラスを投稿してください。それがなければ解を与えるのは難しいです。 – Archana

+0

@LovetoCode +1、なぜリストビューでTwoWayが必要ですか? – Stamos

答えて

0

私はあなたの問題をテストするために通常のUWPアプリのみを使用しています。あなたの問題を再現したと思います。 enter image description here

テンプレート10のモデルのため、エラーメッセージが少し違う可能性がありますが、エラーは同じと思います。

If I set binding mode to OneWay it works!

あなたは{X:バインド}の一方向モードを使用する場合は、あなたのListViewItemSourceが標的結合である、とのViewModelでのごList<Image> Imagesがバインディングソースです。明らかにあなたのソースはImageのコントロールのリストです。 ItemSourceのタイプはSystem.Objectで、バインディングソースはImageコントロールのタイプのリストです。デフォルトでは、データ項目は、バインドされているデータオブジェクトの文字列表現としてListViewに表示されます。したがって、xamlがこの文字列を認識できない場合は、ToStringメソッドの実装を直接使用して型名を返し、項目に表示します。言い換えれば、バインディングターゲットとしてItemSourceがタイプの変換作業を行っています。

しかし、TwoWayモードを使用する場合、ItemSourceはバインディングターゲットであり、バインディングソースでもあるため、List<Image> Imagesです。これは "ItemSource = binding target"というパターンでうまくいきます。なぜなら、私がupperを説明した理由ですが、 "ItemSource = binding source"の場合、System.Object型をList型に自動的に変換しません。また、コンバータはSystem.Object型のコンバータを必要な型に変換しないと言うこともできます。

しかし、ここでTwoWayバインディングが必要とは思われません。 TwoWayバインディングどちらかが変更されたときに、ターゲットオブジェクトまたはソースオブジェクトを更新します。バインディングが作成されると、ターゲットプロパティがソースから更新されます。あなたのコードから、ソースリストを更新する項目の画像コントロールを変更することはできません。 ListView内の項目を動的に追加または削除または編集する場合は、ここでOneWayモードを使用して、コード内のリストを変更することができます。

+0

ありがとうございます!それは間違いが正反対であるように思えたということです。エラーは次のとおりです。System.ObjectにSystem.Collections.Generic.List(posytron.epart.uwp.Models.DOM.Report)型を関連付けることはできません。エラーがより正確ではないでしょうかSystem.Collections.Generic.List(posytron.epart.uwp.Models.DOM.Report)にSystem.Object型を関連付けることはできませんか? –

関連する問題