2012-08-11 77 views
0

我必須建立一個形式(XAML),其將被用於在創建一個數據庫記錄,以後將通過使ID進行編輯。在表單中將會出現組合框,這些組合框將從數據庫填充,並且還會有文本框。我不想重複添加和編輯的XAML,並儘可能地重新使用代碼。我如何在MVVM中實現這一點?我想要使​​用MVVM的最佳實踐。如果任何人都能提出一個很棒的關鍵點。的Silverlight MVVM添加/編輯

+0

這是一個信號你一個缺乏努力一個非常普遍的問題。嘗試研究一般的MVVM,然後再回答關於具體問題的問題。 – 2012-08-11 18:24:27

回答

0

這是一個非常普遍的情況。

您可以創建一個XAML控件/頁面,該控件/頁面接受特定類型的對象/實例並允許編輯該對象的屬性。

如果是編輯,則傳遞一個從數據庫預填充的對象。

如果是創建,則傳入該類型的新實例。

呼叫者/主機會知道什麼樣的對象傳遞給編輯控制。

所以,當通過編輯器,添加/更新到數據庫返回的對象返回可以通過呼叫方/主機的照顧。

+0

你有這樣的例子嗎?我需要1個視圖和2個視圖模型還是需要? – Sean 2012-08-12 13:54:58

0

可以使用從Silverlight工具包,其提供不同的編輯模式數據形 - 例如添加,編輯。

這裏的方法的輪廓。你將需要兩個視圖模型。一個用於數據,另一個用於表單。

// FormViewModel.cs 
public class FormViewModel 
{ 
    public Customer DataItem {get; set;} 

    // --------- perform action --------------- 
    private ICommand _PerformActionCommand = new DelegateCommand(PerformAction); 
    public ICommand PerformActionCommand { 
     get { return _PerformActionCommand; } 
    } 

    public void PerformAction()  
    { 
     if (Customer.IsNew) 
      InsertCustomer(Customer); 
     else 
      SaveCustomer(Customer);  
    } 

    // ------ Button Label -------------- 
    public string ButtonLabel { 
     get { 
     return (Customer.IsNew)? "Add": "Update"; 
     } 
    } 
} 

這裏的形式:

<UserControl.Resources> 
    <local:FormViewModel x:Key="formVM" /> 
</UserControl.Resources> 
<Button 
    Content="{Binding Path=ButtonLabel 
        Source={StaticResource formVM}}" 
    Command="{Binding Path=PerformActionCommand, 
        Source={StaticResource formVM}}" />