gpt4 book ai didi

c# - 将 ViewModel 连接到 Silverlight 中的 View

转载 作者:太空狗 更新时间:2023-10-29 23:04:43 24 4
gpt4 key购买 nike

我可以看到两种将 ViewModel 连接到 View 的方法。一种是在 XAML 中,另一种是通过依赖注入(inject)隐藏在代码中。

哪种方法更可取?我更喜欢 xaml 方法,因为我根本不希望后面的代码中有任何代码,但是其中一个方法比另一个方法有任何问题吗?

<navigation:Page x:Class="MyNamespace.MyViewModel" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ViewModel="clr-namespace:MyNameSpace.MyViewModel"
xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
Title="ViewModel Page" >

<navigation:Page.Resources>
<ViewModel:MyViewModel x:Key="ViewModel"></ViewModel:MyViewModel>
</navigation:Page.Resources>

<Grid x:Name="LayoutRoot" Background="White"
DataContext="{StaticResource ViewModel}">

</Grid>
</navigation:Page>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Navigation;

namespace MyNamespace
{
public partial class MyView : Page
{
public MyView()
{
InitializeComponent(MyViewModel viewModel);

this.DataContext = viewModel;
}
}
}

最佳答案

我使用一个我称之为“屏幕”的类来处理 MVVM 三元组。我开始时将 V 注入(inject)到 VM 中,然后将 VM 作为 V 中的资源,但最终 Screen 概念最适合我。它允许我在不耦合的情况下使用 V 和 VM。它还抽象出我的整体表示框架中的其他功能。以下是我的 Screen 类的构造函数作为示例:

    public CatalogItemScreen(IUnityContainer container) : base(container)
{
this.ViewModel = Container.Resolve<ICatalogItemViewModel>();
this.View = Container.Resolve<CatalogItemView>();
this.View.DataContext = this.ViewModel;
}

注意在Screen中创建了VM,这里创建了V,2个是相互绑定(bind)的。本示例使用Unity和Prism,但不是必须要实现。

关于c# - 将 ViewModel 连接到 Silverlight 中的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/982479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com