xaml - 从 View 的代码隐藏在MvvmCross中

标签 xaml mvvm windows-runtime mvvmcross

对于XAML View ,我将其钩接到this.ViewModel.PropertyChanged上,如下所示:

ViewModel.PropertyChanged += (s, e) =>
{
    if (e.PropertyName == "CurrentImage")
        DoStuff();
};

这是因为XAML不够灵活,无法在没有代码隐藏的情况下直接实现我想要的功能,也因为它的代码与WinRT/XAML纯粹相关,而不与核心可移植项目相关。

但是,在 View 的构造函数中,ViewModel属性为null,因此它的工作方式如下:
this.Loaded += (s2, e2) =>
ViewModel.PropertyChanged += (s, e) =>
{
    if (e.PropertyName == "CurrentImage")
        DoStuff();
};

我认为这(除了使用字符串来引用属性之外)可能还不是很干净,并且应该有一种更好的方法来实现我想要的功能。有没有更理想的方法?

最佳答案

Stuart's comment所述,这可以通过MvxPropertyChangedListener完成:

new MvxPropertyChangedListener(ViewModel).Listen<TOfProperty>(
    () => ViewModel.SomeProperty,
    () =>
    {
        // Do something
    });

关于xaml - 从 View 的代码隐藏在MvvmCross中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18100792/

相关文章:

.net - 如何在 HierarchicalDataTemplate 的 DataType 属性中引用泛型类型?

xaml - Windows Phone 8.1 类似 Bing 的幻灯片页面动画

c++ - 如何使用 WRL 返回内置的 winrt 组件?

microsoft-metro - 当文件位于嵌套文件夹中时,是否可以从 Metro Apps 轻松读取/写入文件系统

c# - RelayCommand 未触发 MenuItem 单击 WPF MVVM

c# - Windows Phone 8.1 不同屏幕尺寸的不同文本大小

c# - 基于不同XAML的样式继承

c# - 具有透明填充但实线描边的 WPF 形状可能吗?

c# - MVVM 将 IsEnabled 绑定(bind)到 ViewModel 中的多个 bool 值

xamarin - Xamarin.Forms检测自定义ContentView单击外部事件