2010-11-24 13 views
0

私は、辞書を返す静的メソッドを持つクラスを持っています。次のようにメソッドのシグネチャは次のとおりです。 public static Dictionary<int, string> CodeLookup<T>() where T : EntityCodeBaseWPF - XAMLで汎用メソッドをバインドする方法は?

瞬間、私はそうのように、背後にあるコードで私のコンボボックスにバインドするために、このメソッドを使用しています: this.cboState.ItemsSource = CodeCache.CodeLookup<StateCode>();

することは、誰かのことができるようにしてくださいだろう私のコードビハインドからこの種のものを取り除くことができるように、私はXAMLでこれを行う正しい方向を教えてください。

おかげで、
ソニー

+0

これは私の最も望む機能の1つでした。最近は、ViewModelを使用して、この関数を読み取り専用プロパティとして公開しています。 –

+0

@ジョン、時々そうするのは便利ですが、ビューテンプレートもバックエンドの実装に依存しすぎてしまうと思います。 – xandy

答えて

4

直接特定の方法に結合しません。プロパティを作成し、それにバインドする必要があります。

public Dictionary<int, string> Code { 
    get { return CodeCache.CodeLookup<StateCode>(); } 
} 
+0

あなたが削除した場合:後で取得:) –

+0

愚かな間違い! – xandy

0

あなたはここで、一般的な方法のために

more info

0

をそれを行うことができないように見えますが、私のViewModel内のプロパティです:

public ObservableCollection<Contact> AllContacts 
    { 
     get { return _applicationViewModel.CurrentContacts; } 
    } 

そして、ここでは私のXAMLです:

<ListView Margin="5" ItemsSource="{Binding Path=AllContacts}"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding Path=LastName}" /> 
       <GridViewColumn Header="First Name" DisplayMemberBinding="{Binding Path=FirstName}" /> 
       <GridViewColumn Header="Work Phone" DisplayMemberBinding="{Binding Path=OfficePhone, Converter={StaticResource phoneConverter}}" /> 
       <GridViewColumn Header="Cell Phone" DisplayMemberBinding="{Binding Path=CellPhone, Converter={StaticResource phoneConverter}}" /> 
       <GridViewColumn Header="Email Address" DisplayMemberBinding="{Binding Path=PrimaryEmail}" /> 
      </GridView> 
     </ListView.View> 
    </ListView> 

DataContextをViewModelに設定するだけで、必要なものすべてを手に入れることができます。詳細はMVVMパターンを参照してください。

静的メソッドにバインドする方法はありますが、基本的なデータバインディングをすべて行っているのであれば、やりすぎです。興味がある場合は、アクションを見てください。

関連する問題