Kotak kombo Silverlight DataContextProxy - apakah ada cara yang lebih baik?

Saya menggunakan kelas datacontextproxy yang ditentukan oleh Dan Wahlin untuk memecahkan apa yang tampaknya sangat sulit selama berjam-jam menjelang penemuan tersebut.

Saya memiliki kotak kombo yang terikat ke ObservableCollection<Accounts>. Kotak kombo juga memiliki nilai: DisplayMemberPath=AccountNumber, dan SelectedValue={Binding SelectedAccount}. Saya kemudian memiliki DataForm yang properti CurrentItemnya juga terikat ke SelectedAccount. Di dalam DataForm saya, saya memiliki beberapa bidang yang memerlukan dropdown tambahan (AcctCode, UsageCode, dll). Untuk mengurangi masalah pengikatan yang saya temui di dalam DataForm, saya menerapkan datacontextproxy, memungkinkan saya menyetel ItemsSource cbobox saya ke {Binding Source={StaticResource DataContextProxy}, Path=DataSource.AccountCodes}". Ini bekerja dengan baik dalam hal hasil akhirnya.

Sebelum tersandung pada ini, saya benar-benar kesulitan dengan temuan ini. Saya tidak menggunakan konteks domain, jadi saya tidak bisa menggunakan ComboBoxex Kyle Mcllelans, saya juga tidak bisa menggunakan sebagian besar solusi yang ditawarkan. Saya memang mencoba membuat instance ViewModel saya sebagai sumber daya lokal di View saya, tetapi a) Saya merasa kotor dalam hal MVVM, dan b) Gagal membuat instance VM baru, karena VM saya memerlukan sejumlah referensi layanan untuk diteruskan pada konstruksi.

Bagaimanapun, saya hanya ingin tahu apakah ada cara saya harus melakukan ini yang lebih berperforma, lebih banyak MVVM, lebih mudah dipelihara, lebih terbaik, dll.

Terima kasih,

Scott


person Scott Silvi    schedule 25.02.2011    source sumber


Jawaban (1)


Scott Saya juga telah memutuskan untuk menggunakan DataContextProxy. Saya rasa penggunaannya masih memberikan solusi MVVM yang baik di mana tampilan hanya memiliki pengetahuan tentang VM melalui pengikatan atau perintah.

Saya melihat penggunaannya sebagai solusi sementara hingga Silverlight 5 dikirimkan. Di Silverlight 5, pengikatan leluhur diperkenalkan yang akan memberikan lebih banyak fleksibilitas dalam pengikatan data.

person Rus    schedule 26.02.2011
comment
Saya sangat menyayangi Anda atas info SL5. Saya belum punya waktu untuk mencarinya, tapi kawan, saya bersemangat :-D - person Scott Silvi; 27.02.2011