いくつかのリストボックスとコンボボックスがあるSilverlightアプリケーションがあります。これは、データを正しく並べ替えて表示するために修正する必要があります。 ItemSourceプロパティのほとんどは、XAMLによって設定されます。それらのDataContextは、コントロールに直接設定することはできず、代わりに親に設定されています。したがって、その割り当てが明示的に存在しない可能性があるため、コードビハインドのItemSourceまたはDataContext割り当てで「OrderBy」を簡単に叩くことはできません。ItemsSourceを "プロキシ"コレクションにバインドします。 DataContextを取得するには?
私は "プロキシ"コレクションを作成する考えがありました。プロキシコレクションは元のItemSourceを取得し、ソートされたバージョンを公開します。
<ListBox>
<ListBox.ItemsSource>
<my:ProxyCollection Source="{Binding}" SortBy="Name"/>
</ListBox.ItemsSource>
</ListBox>
ない、あまりにもみすぼらしい:このに
<ListBox ItemsSource="{Binding}"/>
:私は、これを変換することができるだろう!しかし、ProxyCollectionはListBoxの子ではないので、ListBoxのDataContextはそれに伝播せず、バインディングは魔法のように動作しません。私が手動でProxyCollectionコレクションのDataContextを設定するとうまくいきます。しかし、手動でDataContextを手動で設定する必要がある場合は、プロキシコレクションを削除し、リストボックスのDataContextを手動で設定して、 "OrderBy"を追加することもできます。
私は自動的にListBoxのDataContextをプロキシコレクションに設定する方法について考えていますか?または他の天才のアイデア?