gpt4 book ai didi

silverlight-4.0 - MVVM Light Toolkit设计方法(导航和 View 加载)

转载 作者:行者123 更新时间:2023-12-03 10:40:16 25 4
gpt4 key购买 nike

我正在Silverlight中使用4-5个 View 构建一个简单的应用程序。我遇到了MVVM Light工具箱,我认为它很适合我的需求。

背景

应用程序将具有带有典型列表和详细信息显示的 View

  • 制造商
  • 产品

  • 等等,以及左侧导航栏,页眉和页脚(用户控件)。

    我正在考虑在设计时创建一个包含用户控件的主页。

    问题

    从左侧导航控件中选择链接后,应使用其他 View (例如制造商,产品等)更新中央面板

    我知道Messenger是light工具包中不同VM之间进行通信的一种选择。

    问题

    如何使用MVVM light工具包设计我的应用程序。中央 Pane 需要在运行时加载其他 View 。

    我特别希望在实现应用程序的导航部分方面获得帮助。

    谢谢你。

    最佳答案

    我必须以NON mvvm的方式实现基本的导航。我在主 View 的构造函数上有一个消息监听器,该监听器监听页面导航消息(自定义消息学习,喜欢,使用它),然后将导航框架的内容源设置为在信息。我使用字符串常量获取所有页面和子页面导航设置的URL。

    public MainPage()
    {
    InitializeComponent();
    Loaded += OnLoaded;
    WebContext.Current.Authentication.LoggedOut +=
    new EventHandler<System.ServiceModel.DomainServices.Client.ApplicationServices.AuthenticationEventArgs>(Authentication_LoggedOut);
    Messenger.Default.Register<msgs.NavigationRequest<PageURI>>(this, (uri => ContentFrame.Navigate(uri.Content)));
    Messenger.Default.Register<WavelengthIS.Core.Messaging.ExceptionMessage>(this, ex => ShowExceptionMessage(ex));
    Messenger.Default.Register<WavelengthIS.Core.Messaging.StringMessage>(this, str => ShowMessageForUser(str));

    }


    public class PageURI : Uri
    {
    public PageURI(string uriString, UriKind uriKind)
    : base(uriString, uriKind)
    {

    }


    }


    public class PageLinks
    {
    public const string SEARCHBYDAYCOUNTVIEW = "/Views/PatientSearchHeaders/SearchByDayCountView.xaml";
    public const string SEARCHBYPATIENTCRITERIAVIEW = "/Views/PatientSearchHeaders/SearchByPatientCriteriaView.xaml";
    public const string QUESTIONAIRRESHELL = "/Views/QuestionairreViews/QuestionairreShell.xaml";
    public const string HOME = "/Views/PrimarySearchView.xaml";
    public const string REPORTS = "/Views/ReportsPage.xaml";
    public const string LOGINPAGE = "/Views/LoginPageView.xaml";
    }

    VM中的实际调用:
    private void OnSurveyCommandExecute()
    {
    Wait.Begin("Loading Patient List...");
    _messenger.Send<ReadmitPatientListViewModel>(this);
    _messenger.Send<Messages.NavigationRequest<SubClasses.URI.PageURI>>(GetNavRequest_QUESTIONAIRRESHELL());

    }

    private static Messages.NavigationRequest<SubClasses.URI.PageURI> GetNavRequest_QUESTIONAIRRESHELL()
    {
    Messages.NavigationRequest<SubClasses.URI.PageURI> navRequest =
    new Messages.NavigationRequest<SubClasses.URI.PageURI>(
    new SubClasses.URI.PageURI(Helpers.PageLinks.QUESTIONAIRRESHELL, System.UriKind.Relative));
    return navRequest;
    }

    关于silverlight-4.0 - MVVM Light Toolkit设计方法(导航和 View 加载),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6251112/

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