0 Soalan: Apakah cara paling tepat untuk menyesuaikan sepenuhnya kod ini dengan corak MVVM?

soalan dicipta di Wed, May 8, 2019 12:00 AM

Saya mempunyai DataGrid dengan DataGridComboBoxColumn. Setiap ComboBox sepatutnya mempunyai drop-down yang sama: nilai-nilai baru yang dimasukkan dalam ComboBox (ComboBox boleh diedit dan menerima kekunci Enter untuk memperkenalkan nilai baru dalam senarai itu, jika belum ada), senarai beberapa yang telah ditentukan sebelumnya nilai dan nilai kelabu khas. Pengguna sepatutnya dapat menambah baris baru dalam grid data, seperti yang mungkin dalam versi semasa.

Butiran dalam ComboBox diambil dari BaseVM, dan BaseVM dan BaseM agak bersinkingan, lebih tepatnya BaseVM.ChildVMCollection dan BaseM.ChildMCollection. Saya telah cuba mencari pendekatan yang lebih mudah untuk menyegerakkan kedua-dua koleksi tetapi saya tidak berjaya. ChildVM mewarisi dari ChildM dan BaseVM mewarisi dari BaseM.

Jika boleh, saya ingin menghormati corak MVVM (saya lihat ia membuat fleksibiliti untuk jangka panjang).

Saya telah mempertimbangkan menggunakan kilang model paparan, tetapi untuk contoh ini, saya membuangnya untuk kesederhanaan. Saya hanya menggunakan panggilan untuk pembina dan pengirim.

Saya fikir saya mesti mempunyai ViewModel untuk setiap item dalam setiap kotak combo di dalam DataGridComboBoxColumn, satu untuk setiap pandangan (ComboBoxItem) dan saya ingin tahu bagaimana untuk melaksanakannya dengan betul. Sebagai rehat, saya fikir saya boleh melaksanakan Locator ViewModel untuk mendapatkan Model untuk ViewModel (walaupun ini hanya pelakon dalam kod yang diposkan di atas).

Mungkin soalan ini disambung semula ke:

Dalam DataGrid apa cara paling tepat untuk menetapkan ItemsSource dari setiap ComboBox secara berasingan supaya setiap ComboBoxItem di dalamnya mempunyai ViewModel tertentu?

Saya seorang pemula. Saya telah meletakkan beberapa laman Wikipedia dalam senarai bacaan saya:

  • Suntikan ketergantungan
  • Penyusunan kawalan
  • Rangkaian pencari perkhidmatan
  • Prinsip tanggungjawab tunggal
  • Prinsip pengasingan antara muka
  • dan https://www.oodesign.com/
  • dan mungkin lebih.

Pada masa ini, saya sedang menggunakan tutorial ini . Saya terbiasa dengan cara WinForms untuk melakukan yang paling banyak dalam kod-behind.

Saya cuba membina semula kod tersebut di repo GitHub ini dengan cara MVVM yang lebih tepat . Ini adalah kesinambungan kemas kini dalam soalan ini .

Kod ini berfungsi, tetapi ia tidak sangat fleksibel.

    
- 2
  1. ya setiap item dalam senarai harus menjadi ViewModel yang melaksanakan INotifyPropertyChange
    2019-05-08 16: 05: 00Z
  2. Setiap ComboBox tidak semestinya memerlukan viewmodel berasingan. Itu kelihatan berlebihan. Anda harus mempunyai ViewModel untuk setiap Kawalan /Paparan bebas; ini boleh menjadi tingkap, halaman, atau kawalan yang direka bentuk secara bebas. Adakah terdapat sebab setiap cantuman combobox hanya mempunyai ObservableCollection masing-masing dalam ViewModel utama?
    2019-05-08 16: 39: 55Z
  3. Kod kerja yang "lengkap" bukanlah sasaran SO-Questions. Terdapat laman web lain dalam rangkaian penukaran stack yang mengendalikan codereviews - mereka mendapat peraturan mereka sendiri. Soalan anda sangat luas - adakah anda fikir ia sesuai untuk SO?
    2019-05-08 16: 40: 13Z
  4. Jika anda bertanya soalan tentang kod anda, sila letakkan sampel yang minimum tetapi mencukupi kod dalam soalan anda. Pautan luar tapak sangat tidak digalakkan, kerana mereka selalu mati pada satu ketika.
    2019-05-08 16: 47: 25Z
0 Jawapan                              0                         
sumber diletakkan di sini