คำถามติดแท็ก mvvm

Model-View-ViewModel (MVVM) เป็นรูปแบบการออกแบบสถาปัตยกรรมสำหรับการใช้งานอินเทอร์เฟซผู้ใช้ที่แยก UI (มุมมอง) ออกจากข้อมูล (โมเดล) ผ่านตรรกะการนำเสนอ (ViewModel)

25
MVC กับ MVVM ต่างกันอย่างไร? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 เดือนที่ผ่านมา มีความแตกต่างระหว่างรูปแบบ "Model View Controller" มาตรฐานและรูปแบบ Model / View / ViewModel ของ Microsoft หรือไม่

14
INotifyPropertyChanged กับ DependencyProperty ใน ViewModel
เมื่อติดตั้ง ViewModel ในแอพพลิเคชั่น WP-View-ViewModel สถาปัตยกรรม WPF ดูเหมือนจะมีสองตัวเลือกหลัก ๆ ในการทำให้ databindable ฉันได้เห็นการใช้งานที่ใช้DependencyPropertyสำหรับคุณสมบัติที่วิวจะเชื่อมโยงกับและฉันได้เห็นการใช้งาน ViewModel INotifyPropertyChangedแทน คำถามของฉันคือเมื่อใดที่ฉันควรเลือกหนึ่งคำถาม มีความแตกต่างด้านประสิทธิภาพหรือไม่? เป็นความคิดที่ดีหรือไม่ที่จะมอบการพึ่งพา ViewModel ให้กับ WPF? ฉันต้องพิจารณาอะไรอีกเมื่อตัดสินใจออกแบบ

30
วิธีการผูกกับ PasswordBox ใน MVVM
asswordBoxฉันได้เจอปัญหากับการผูกกับระดับ P ดูเหมือนว่าจะมีความเสี่ยงด้านความปลอดภัย แต่ฉันใช้รูปแบบ MVVM ดังนั้นฉันต้องการหลีกเลี่ยงสิ่งนี้ ฉันพบรหัสที่น่าสนใจที่นี่ (มีใครใช้สิ่งนี้หรือคล้ายกัน?) http://www.wpftutorial.net/PasswordBox.html ในทางเทคนิคมันดูดี แต่ฉันไม่แน่ใจว่าจะดึงรหัสผ่านได้อย่างไร ฉันเป็นพื้นมีคุณสมบัติในของฉันLoginViewModelสำหรับและUsername เป็นเรื่องปกติและใช้งานได้ดีPasswordUsernameTextBox ฉันใช้รหัสด้านบนตามที่ระบุและป้อนสิ่งนี้ <PasswordBox ff:PasswordHelper.Attach="True" ff:PasswordHelper.Password="{Binding Path=Password}" Width="130"/> เมื่อฉันมีการPasswordBoxเป็นTextBoxและBinding Path=Passwordจากนั้นคุณสมบัติในของฉันLoginViewModelถูกปรับปรุง รหัสของฉันเป็นเรื่องง่ายมากโดยทั่วไปฉันมีสำหรับฉันCommand Buttonเมื่อผมกดมันจะเรียกว่าและถ้ามันกลับจริงที่เรียกว่าCanLogin คุณสามารถเห็นฉันตรวจสอบคุณสมบัติของฉันที่นี่ซึ่งใช้งานได้ดีLoginUsername ในLoginฉันส่งไปพร้อมกับการบริการของฉันUsernameและPassword, Usernameมีข้อมูลจากฉันViewแต่Passwordเป็นNull|Empty private DelegateCommand loginCommand; public string Username { get; set; } public string Password { get; set; } public ICommand LoginCommand { get { if …
251 c#  wpf  mvvm  wpf-controls  passwords 

26
ViewModel ควรปิดแบบฟอร์มอย่างไร
ฉันพยายามที่จะเรียนรู้ WPF และปัญหา MVVM แต่มีอุปสรรค คำถามนี้คล้ายกัน แต่ไม่เหมือนกันกับคำถามนี้ (การจัดการไดอะล็อก -in-wpf-with-mvvm) ... ฉันมีแบบฟอร์ม "เข้าสู่ระบบ" ที่เขียนโดยใช้รูปแบบ MVVM แบบฟอร์มนี้มี ViewModel ซึ่งเก็บชื่อผู้ใช้และรหัสผ่านซึ่งถูกผูกไว้กับมุมมองใน XAML โดยใช้การเชื่อมโยงข้อมูลปกติ นอกจากนี้ยังมีคำสั่ง "เข้าสู่ระบบ" ซึ่งถูกผูกไว้กับปุ่ม "เข้าสู่ระบบ" บนแบบฟอร์ม agan ใช้ databinding ปกติ เมื่อคำสั่ง "ลงชื่อเข้าใช้" เริ่มทำงานจะเรียกใช้ฟังก์ชันใน ViewModel ซึ่งจะดับและส่งข้อมูลผ่านเครือข่ายเพื่อเข้าสู่ระบบเมื่อฟังก์ชันนี้เสร็จสมบูรณ์มีการดำเนินการ 2 รายการ: การเข้าสู่ระบบไม่ถูกต้อง - เราเพิ่งแสดงกล่องข้อความและทุกอย่างเรียบร้อย การเข้าสู่ระบบนั้นถูกต้องเราต้องปิดแบบฟอร์มการเข้าสู่ระบบและให้มันกลับมาจริงเพราะDialogResult... ปัญหาคือ ViewModel ไม่รู้อะไรเกี่ยวกับมุมมองจริงดังนั้นจะปิดมุมมองอย่างไรและบอกให้ส่งคืน DialogResult ที่เฉพาะเจาะจงได้อย่างไร ฉันสามารถติดโค้ดบางอย่างใน CodeBehind และ / หรือส่งมุมมองผ่านไปยัง ViewModel …
247 c#  wpf  mvvm 

22
MVVM: การสอนตั้งแต่ต้นจนจบ?
ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ ฉันเป็นโปรแกรมเมอร์แบบฟอร์ม C # / Windows ที่มีประสบการณ์มากกว่า 5 ปี ฉันตรวจสอบ WPF โดยใช้รูปแบบการออกแบบ MVVM (Model-View-ViewModel) ฉันค้นหาบทเรียนทางอินเทอร์เน็ต ฉันได้ดูวิดีโอที่ยอดเยี่ยมทั้งหมดของ Jason Dolinger ด้วยซ้ำ แม้ว่าฉันจะได้พบมากฉันไม่ได้พบคนที่พาฉันตั้งแต่ต้นจนจบ สิ่งที่ฉันต้องการจริงๆคือบทช่วยสอนที่ไม่ถือว่าความรู้ WPF ก่อนหน้านี้ อะไรคือบทช่วยสอน WPF-MVVM ที่คุณโปรดปรานที่ช่วยให้คุณเรียนรู้?
243 c#  .net  wpf  mvvm 

20
การเชื่อมโยงข้อมูลกับ SelectedItem ใน WPF Treeview
ฉันจะดึงรายการที่เลือกใน WPF-treeview ได้อย่างไร ฉันต้องการทำสิ่งนี้ใน XAML เพราะฉันต้องการผูกมัน คุณอาจคิดว่ามันเป็นSelectedItemแต่เห็นได้ชัดว่าไม่มีอยู่เป็นแบบอ่านอย่างเดียวและใช้ไม่ได้ นี่คือสิ่งที่ฉันต้องการจะทำ: <TreeView ItemsSource="{Binding Path=Model.Clusters}" ItemTemplate="{StaticResource ClusterTemplate}" SelectedItem="{Binding Path=Model.SelectedCluster}" /> ฉันต้องการผูกSelectedItemคุณสมบัติให้กับ Model ของฉัน แต่นี่ทำให้ฉันเกิดข้อผิดพลาด: คุณสมบัติ 'SelectedItem' เป็นแบบอ่านอย่างเดียวและไม่สามารถตั้งค่าได้จากมาร์กอัป แก้ไข: ตกลงนี่คือวิธีที่ฉันแก้ไขสิ่งนี้: <TreeView ItemsSource="{Binding Path=Model.Clusters}" ItemTemplate="{StaticResource HoofdCLusterTemplate}" SelectedItemChanged="TreeView_OnSelectedItemChanged" /> และใน codebehindfile ของ xaml ของฉัน: private void TreeView_OnSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) { Model.SelectedCluster = (Cluster)e.NewValue; }
241 c#  wpf  mvvm  treeview  selecteditem 

23
การจัดการกล่องโต้ตอบใน WPF ด้วย MVVM
ในรูปแบบ MVVM สำหรับ WPF การจัดการไดอะล็อกเป็นหนึ่งในการดำเนินการที่ซับซ้อนมากขึ้น เนื่องจากโมเดลการดูของคุณไม่ทราบอะไรเกี่ยวกับมุมมองการสื่อสารในกล่องโต้ตอบจึงน่าสนใจ ฉันสามารถแสดงให้เห็นICommandว่าเมื่อมุมมองเรียกมันโต้ตอบสามารถปรากฏขึ้น ไม่มีใครรู้วิธีที่ดีในการจัดการผลลัพธ์จากการโต้ตอบ? MessageBoxฉันกำลังพูดเกี่ยวกับหน้าต่างไดอะล็อกเช่น อีกวิธีหนึ่งที่เราทำคือมีเหตุการณ์ใน viewmodel ที่มุมมองจะสมัครเมื่อต้องการไดอะล็อก public event EventHandler<MyDeleteArgs> RequiresDeleteDialog; ไม่เป็นไร แต่หมายความว่ามุมมองต้องใช้รหัสซึ่งเป็นสิ่งที่ฉันต้องการหลีกเลี่ยง

13
ฉันควรใช้กรอบการทำงานใดสำหรับ MVVM [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องการอภิปรายการโต้แย้งการหยั่งเสียงหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันกำลังพัฒนาแอปพลิเคชันด้วยโมเดล MVVM แต่ฉันมาถึงจุดที่ฉันต้องเลือกกรอบการทำงานที่จะใช้ ตัวเลือกที่เป็นไปได้คือ: ชุดเครื่องมือ MVVM มูลนิธิ MVVM WPF Application Framework (WAF) ไฟ MVVM Caliburn ของแน่นอน ปริซึม ReactiveUI จากประสบการณ์ของคุณไหนดีกว่ากัน?
233 wpf  mvvm  frameworks 

5
Vue.js - ความแตกต่างระหว่าง v-model และ v-bind
ฉันกำลังเรียน Vue ด้วยหลักสูตรออนไลน์และผู้สอนให้ฉันออกกำลังกายเพื่อป้อนข้อความด้วยค่าเริ่มต้น ฉันทำมันเสร็จโดยใช้ v-model แต่ผู้สอนเลือก v-bind: value และฉันไม่เข้าใจว่าทำไม ใครสามารถให้คำอธิบายง่ายๆเกี่ยวกับความแตกต่างระหว่างสองสิ่งนี้กับเวลาที่ควรใช้แต่ละอันดีกว่า

4
อะไรคือความแตกต่างระหว่างรูปแบบการออกแบบ MVC, MVP และ MVVM ในแง่ของการเข้ารหัส c #
หากเราค้นหา Google โดยใช้วลี "อะไรคือความแตกต่างระหว่าง MVC, MVP และ MVVM รูปแบบการออกแบบ" จากนั้นเราอาจได้ URL ไม่กี่อันที่พูดถึงความแตกต่างระหว่างรูปแบบการออกแบบ MVC MVP และ MVVM ตามหลักเหตุผลเช่น : MVP ใช้ในสถานการณ์ที่ไม่สามารถผูกข้อมูลผ่าน datacontext ได้ Windows Forms เป็นตัวอย่างที่สมบูรณ์แบบของสิ่งนี้ ในการแยกมุมมองออกจากแบบจำลองจำเป็นต้องมีผู้นำเสนอ เนื่องจากมุมมองไม่สามารถเชื่อมโยงโดยตรงกับผู้นำเสนอได้จึงต้องส่งข้อมูลไปยังมุมมองผ่านอินเทอร์เฟซ (IView) MVVM ใช้ในสถานการณ์ที่ผูกพันผ่าน datacontext ได้ ทำไม? อินเทอร์เฟซ IView ต่าง ๆ สำหรับแต่ละมุมมองจะถูกเอาออกซึ่งหมายถึงรหัสน้อยกว่าเพื่อรักษา ตัวอย่างที่ MVVM มีความเป็นไปได้ ได้แก่ WPF และโปรเจ็กต์ javascript โดยใช้สิ่งที่น่าพิศวง MVC ใช้ในสถานการณ์ที่ไม่สามารถเชื่อมต่อระหว่างมุมมองและส่วนที่เหลือของโปรแกรมได้ (และคุณไม่สามารถใช้ MVVM …

5
KnockOutJS - ViewModels หลายรายการในมุมมองเดียว
ฉันคิดว่าแอปพลิเคชันของฉันมีขนาดค่อนข้างใหญ่ในขณะนี้มีขนาดใหญ่เกินไปที่จะจัดการแต่ละมุมมองด้วย ViewModel เดียว ดังนั้นฉันจึงสงสัยว่าจะสร้าง ViewModels หลายรายการและโหลดทั้งหมดลงในมุมมองเดียวได้อย่างไร ด้วยหมายเหตุที่ฉันยังต้องสามารถส่งผ่านข้อมูลX ViewModelไปยังข้อมูลY ViewModelดังนั้น ViewModels แต่ละรายการจะต้องสามารถสื่อสารระหว่างกันหรืออย่างน้อยก็ต้องระวังซึ่งกันและกัน ตัวอย่างเช่นฉันมีรายการ<select>แบบหล่นลงที่เลือกแบบเลื่อนลงมีสถานะที่เลือกซึ่งช่วยให้ฉันผ่าน ID ของรายการที่เลือกในการ<select>โทร Ajax อื่นใน ViewModel แยกต่างหาก .... จุดใด ๆ ในการจัดการกับ ViewModels จำนวนมากในมุมมองเดียวชื่นชม :)

7
เพิ่มคำสั่งจากคำสั่งใน AngularJS
ฉันกำลังพยายามสร้างคำสั่งที่ดูแลการเพิ่มคำสั่งเพิ่มเติมให้กับองค์ประกอบที่ประกาศไว้ ตัวอย่างเช่นผมต้องการที่จะสร้างคำสั่งที่จะดูแลของการเพิ่มdatepicker, และdatepicker-languageng-required="true" หากฉันพยายามเพิ่มคุณสมบัติเหล่านั้นและจากนั้นใช้$compileฉันเห็นได้ชัดว่าสร้างวงวนไม่สิ้นสุดดังนั้นฉันจึงตรวจสอบว่าฉันได้เพิ่มคุณสมบัติที่ต้องการแล้ว: angular.module('app') .directive('superDirective', function ($compile, $injector) { return { restrict: 'A', replace: true, link: function compile(scope, element, attrs) { if (element.attr('datepicker')) { // check return; } element.attr('datepicker', 'someValue'); element.attr('datepicker-language', 'en'); // some more $compile(element)(scope); } }; }); แน่นอนถ้าฉันไม่ได้$compileองค์ประกอบองค์ประกอบจะถูกตั้งค่า แต่คำสั่งจะไม่ถูก bootstrapped วิธีนี้ถูกต้องหรือฉันทำผิดหรือเปล่า? มีวิธีที่ดีกว่าเพื่อให้บรรลุพฤติกรรมเดียวกันหรือไม่ UDPATE : เนื่องจากความจริงที่ว่า$compileเป็นวิธีเดียวที่จะบรรลุเป้าหมายนี้มีวิธีข้ามการรวบรวมครั้งแรกหรือไม่ (องค์ประกอบอาจมีลูกหลายคน) อาจจะด้วยการตั้งค่าterminal:true? …

4
ผูก WPF ComboBox ไปยังรายการที่กำหนดเอง
ฉันมี ComboBox ที่ดูเหมือนจะไม่อัพเดทค่า SelectedItem / SelectedValue ComboBox ItemsSource ถูกผูกไว้กับคุณสมบัติบนคลาส ViewModel ที่แสดงรายการสมุดโทรศัพท์ RAS จำนวนมากเป็น CollectionView จากนั้นฉันได้ผูก (ในเวลาที่แยกต่างหาก) ทั้งคุณสมบัติSelectedItemหรือSelectedValueไปยังคุณสมบัติอื่นของ ViewModel ฉันได้เพิ่ม MessageBox ลงในคำสั่งบันทึกเพื่อตรวจแก้จุดบกพร่องค่าที่กำหนดโดย databinding แต่ไม่มีการตั้งค่าSelectedItem/ การSelectedValueผูก คลาส ViewModel มีลักษณะดังนี้: public ConnectionViewModel { private readonly CollectionView _phonebookEntries; private string _phonebookeEntry; public CollectionView PhonebookEntries { get { return _phonebookEntries; } } public string PhonebookEntry …
183 c#  wpf  data-binding  mvvm  combobox 

6
[เตือน Vue]: ไม่พบองค์ประกอบ
ฉันใช้Vuejs นี่คือมาร์กอัปของฉัน: <body> <div id="main"> <div id="mainActivity" v-component="{{currentActivity}}" class="activity"></div> </div> </body> นี่คือรหัสของฉัน: var main = new Vue({ el: '#main', data: { currentActivity: 'home' } }) ; เมื่อฉันโหลดหน้าฉันได้รับคำเตือนนี้: [Vue warn]: Cannot find element: #main ผมทำอะไรผิดหรือเปล่า?
166 javascript  mvvm  vue.js 

17
ViewModel หรือ Model ใน MVVM ควรใช้ INotifyPropertyChanged หรือไม่
ส่วนใหญ่ตัวอย่าง MVVM ฉันได้ทำงานผ่านได้มีรุ่นใช้ INotifyPropertyChangedแต่ในจอชสมิ ธ CommandSink ตัวอย่าง ดำเนิน ViewModelINotifyPropertyChanged ฉันยังคงรวบรวมแนวความคิด MVVM เข้าด้วยกันอย่างมีสติดังนั้นฉันไม่รู้ว่า: คุณต้องใส่INotifyPropertyChangedใน ViewModel เพื่อCommandSinkไปทำงาน นี่เป็นเพียงความคลาดเคลื่อนของบรรทัดฐานและมันก็ไม่สำคัญอะไร คุณควรมีโมเดลใช้อยู่เสมอINotifyPropertyChangedและนี่เป็นเพียงความผิดพลาดซึ่งจะได้รับการแก้ไขหากสิ่งนี้ได้รับการพัฒนาจากตัวอย่างโค้ดไปยังแอปพลิเคชัน อะไรคือประสบการณ์ของผู้อื่นในโครงการ MVVM ที่คุณได้ทำ?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.