如何从后台代码访问 ViewModelLocator 中的 MainViewModel?

2024-04-29

使用 MVVM light 为我的视图模型构建 WP7 应用程序。我正在使用当您通过 NuGet 添加库时添加的 ViewModelLocator。效果很好,但现在我需要从代码访问 ViewModel。

在我的代码中,用户单击一个按钮,我需要搜索 MainViewModel(其中包含多个视图模型)并根据用户输入的条件找到一个。

通常我只会响应按钮的 Click 事件,但我没有 ViewModelLocator 类的实例变量来获取 MainViewModel 来执行搜索。使用 Windows Phone 7 的默认模板(非 MVVMLight),App 类具有主视图模型的静态变量,因此您可以随时使用 App.ViewModel 访问它。

Twitter 上有一些关于使用命令的讨论,这会很好,但在某些时候我必须跨多个虚拟机执行代码搜索才能获得我需要的结果。可能需要将 ISearchViewModel 服务注入视图或其他东西才能使其工作。

以下是提供的 ViewModelLocator 的实现:

public class ViewModelLocator
{
    private static MainViewModel _main;

    public ViewModelLocator()
    {
        _main = new MainViewModel();
    }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance",
    "CA1822:MarkMembersAsStatic",
    Justification = "This non-static member is needed for data binding purposes.")]
    public MainViewModel Main
    {
        get
        {
            return _main;
        }
    }
}

那么,从另一个视图的代码后面,如何访问 Main(MainViewModel 包含所有数据列表并具有我调用的搜索方法)?或者你应该吗?

只是想知道人们如何解决此类问题?

Thanks.


在 MVVM-Light 中,ViewModelLocator 作为应用程序资源提供。因此您仍然可以直接访问它,但语法不同。如果您查看 App.xaml,您应该会在某处看到这段代码。

<Application.Resources>
    <vm:ViewModelLocator x:Key="Locator"
                         d:IsDataSource="True" />
</Application.Resources>

您可以从应用程序中的任何位置访问应用程序的资源,因此也可以使用以下代码访问 MainViewModel:

(App.Current.Resources["Locator"] as ViewModelLocator).Main

这适用于任何应用程序资源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从后台代码访问 ViewModelLocator 中的 MainViewModel? 的相关文章

  • BitmapSource 转换为 Windows Phone 流

    我有一门课程需要一个流来旋转手机摄像头的图像 我遇到的问题是 当从独立存储加载图片时 即用户之前保存图片之后 它被加载到 BitmapSource 中 如果可能的话 我想将位图源 提取 回流中 有谁知道WP7是否使用silverlight
  • 取消 RestSharp 请求

    我正在制作一个 wp7 应用程序 它使用 RestSharp 下载一些数据 我注意到应用程序指南要求我提供一个允许用户取消数据传输的 ui 元素 是否可以在休息时取消 ExecuteAsync 请求 ExecuteAsync 返回一个Res
  • Windows Phone 应用程序栏的图标颜色

    应用栏图标的颜色到底什么时候改变 即从白色变为黑色 或从黑色变为白色 当主题从黑色切换为白色时 或者当应用程序栏的背景画笔改变时 如果我想应用自己的自定义主题 以便应用程序栏始终为白色 该怎么办 我使用黑色图标 但即使应用程序栏是白色的 因
  • 部分类继承

    我正在为 Windows Phone 制作一个单位转换器 但我在类继承方面遇到了一些问题 我有课Measurement这应该是我的程序中图形内容的顶级 public class Measurement PhoneApplicationPag
  • 用户控制可混合性 wp7

    嗨我想做一个简单的用户控件
  • Windows 8 的 mvvmlight 中缺少 EventToCommand 行为 - 解决方法?

    问题确实说明了一切 我正在使用 MVVM Light 用 XAML C 编写一个 Windows 8 应用程序 我注意到 EventToCommand 功能尚未实现 有人可以建议对此有任何解决方法吗 thanks 您现在可以使用 Event
  • 命令绑定到 ViewModel,并在 View 中使用确认逻辑

    寻找最优雅的解决方案将按钮命令绑定到 ViewModel ICommand 属性 同时允许在视图中进行确认 我想做的事 仅允许用户在应该时单击按钮 单击按钮时 要求确认 如果确认 则在 ViewModel 中进行工作 否则取消 不要破坏MV
  • 如何从后台代码访问 ViewModelLocator 中的 MainViewModel?

    使用 MVVM light 为我的视图模型构建 WP7 应用程序 我正在使用当您通过 NuGet 添加库时添加的 ViewModelLocator 效果很好 但现在我需要从代码访问 ViewModel 在我的代码中 用户单击一个按钮 我需要
  • 如何在 Windows Phone 7 中创建自定义文本框?

    是否可以通过创建自定义文本框来处理 sip 我想创建一个自定义文本框 gt 创建获得焦点事件 gt 在我的自定义文本框的焦点上而不是 SIP 上 我的自定义键盘应该打开 要求 如何创建自定义文本框 打开自定义键盘而不是 SIP 获取文本字段
  • 在 Windows Phone 8 中实现多点触控以及捏合和缩放

    我如何在 Windows Phone 8 中实现捏合缩放和多点触控功能 在我的应用程序中 我在网格中添加 3 个图像容器 并且需要对图像执行上述操作 请任何人帮助我在我的应用程序中实现该功能 提前致谢 Stez 尝试使用 codeplex
  • 原生编程对于移动开发有何优势?

    我需要为一家公司在一些主要的移动操作系统上开发应用程序 特别是 iOS Android 和 WP7 我最初计划为三种不同的操作系统编写三个独立的应用程序 每个应用程序都使用本机 SDK 然而 这样做有什么好处吗 有许多可用的跨平台工具 Se
  • 如何处理 MVVM 模式中嵌套 ListView 的 ItemClick?

    XAML代码
  • 如何在WP7 WebBrowser控件中注入Javascript?

    我可以通过此链接将 JavaScript 注入到 C Windows 窗体中的 WebBrowser 控件中 如何在WebBrowser控件中注入JavaScript https stackoverflow com questions 15
  • Windows Phone 自定义着色器错误?

    在 Windows Phone XNA 4 0 中 我在编译时收到以下错误 Windows Phone平台不支持自定义着色器 这真的很烦人 因为我有一个 Xbox 360 版本的项目 还有一个 Windows 版本的项目 我尝试使用基于编译
  • wpf 的 prism 与 mvvm light

    我们正在启动一个带有 MVVM 的 WPF 项目 并且必须决定使用 PRISM 还是 MVVM Light 我对这两个框架都是新手 我已经阅读了一些帖子 但仍然有一些问题 有人可以阐明以下几个方面吗 两个框架 性能 无论出于何种原因 其中一
  • 只允许输入字母

    如何过滤虚拟键盘中的非字母键 以下方法仅适用于拉丁字母 不幸的是 public static bool IsLetter int val return InRange val 65 90 InRange val 97 122 InRange
  • SimpleIoC - 在缓存中找不到类型:Windows.UI.Xaml.Controls.Frame

    第一次由 SimpleIoC 实例化我的 ViewModel 时 我遇到了以下错误 我相信我已经按应有的方式设置了容器 但由于某种原因 我仍然收到以下错误 任何想法或帮助将非常感激 Microsoft Practices ServiceLo
  • 如何从 GestureListener.Gesture 触发 EventToCommand

    有人使用 Toolkit GestureListener 来触发 EventToCommand 吗 我认为您无法使用 EventToCommand 行为来做到这一点 但我创建了一种行为 允许通过将 GestureListener 绑定到命令
  • 我怎样才能像 HTC 'Stocks' 应用程序一样绘制漂亮的图表

    我用我的 HTC Mozart 下载了一个名为 Stocks 的应用程序 它主要管理股票 纳斯达克等 图表 图形看起来非常漂亮 我想知道如何做类似的事情 这是图表的图片 我看到 3 种颜色 曲线上方 背景 曲线本身 低于曲线 有没有免费 开
  • 如果 Window.SizeToContent = WidthAndHeight,则 Loaded 事件的 EventToCommand 无法按预期工作

    我发现EventToCommand对于 Loaded event 来说 如果Window SizeToContent属性设置为WidthAndHeight Loaded 事件似乎被正确触发 但是EventToCommand Command属

随机推荐