簡體   English   中英

在Silverlight 3.0中結合.NET RIA服務和MVVM

[英]Combining .NET RIA Services and MVVM in Silverlight 3.0

在Silverlight 3.0中使用.NET RIA Services和MVVM時,RIA Services的Metadata類型和MVVM模式的ViewModel之間存在差異嗎? 這些是相同的還是應該分開?

元數據類型是部分Entity類的密封內部類。 似乎沒有適當的分離,但元數據類型也可以使用Validation的屬性進行修飾,使其看起來像ViewModel。

我一直在四處尋找,但我沒有看到任何有關這方面的細節。

同意ChuckJ - 通常DomainContext構成視圖模型的一部分。 例如,假設我有一個允許搜索產品目錄的搜索頁面。 這是我如何構建的東西:

在服務器上:

class Catalog : DomainService {
    IQueryable<Product> GetProducts(string keyword) { ... }
}

生成的DomainContext:

class Catalog : DomainContext {
    EntityList<Product> Products { get; }
    void LoadProducts(string keyword);
}

我會寫的視圖模型:

class SearchViewModel {
    Catalog _catalog = new Catalog();

    public IEnumerable<Product> Results {
        get { return _catalog.Products; }
    }

    public void Search(string keyword) {
        _catalog.Products.Clear();
        _catalog.LoadProducts(keyword);
    }
}

最后在我的xaml中,我將UserControl的DataContext設置為SearchViewModel的一個實例,並將ItemsControl綁定到Results屬性。 我將使用您選擇的ViewModel模式將按鈕單擊綁定到Search(這實際上是SearchViewModel公開的命令)。 我個人喜歡我使用Silverlight.FX的東西,如:

<Button Content="Search"
  fxui:Interaction.ClickAction="$model.Search(keywordTextBox.Text)" />

並且初步顯示出在這里

正如Chuck提到的,我可能確實在我的視圖模型中有其他狀態,例如,可能與我的xaml中的ListBox的SelectedItem雙向綁定的SelectedProduct,然后將相同的SelectedProduct綁定為DataForm的DataContext以顯示所選產品的詳細信息。

希望有所幫助! 我很快就會在我的博客上寫博客

RIA服務數據上下文旨在在MVVM模式中扮演ViewModel的角色,因為它們本身支持數據綁定,但它們不在其文檔中使用該術語。 但是,這真的取決於。 您可能需要在視圖模型中使用狀態,而不是RIA數據上下文提供的命令和其他視圖相關的狀態。 我想你想要做的是使用RIA服務中的數據上下文作為視圖模型的一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM