silverlight - 使用 Caliburn.Micro 将 SelectionChanged 绑定(bind)到 ViewModel

标签 silverlight viewmodel caliburn

我们在一个新的 Silverlight 项目中使用了 Caliburn.Micro,一切都很好。内置约定将按钮单击事件绑定(bind)到 viewModel,但我不确定在数据网格和组合框上处理 selectionChanged 事件的最佳方法是什么。

目前,我正在绑定(bind)到所选项目并调用自定义逻辑,但我觉得这有点代码味道,我应该将属性的设置和 selectedChange 事件分开。但是,如果我将这些分开,如何通过命令将选择更改事件绑定(bind)到我的 View 模型?还是事件触发器?或者下面的代码可以接受吗?这是一个很小的变化,但我到处都在做这个逻辑。

private Foo _selectedFoo;
public Foo SelectedFoo
{
    get
    {
        return _Foo;
    }
    set
    {
        if (_Foo != null && _Foo.Equals(value)) return;
        _Foo = value;
        NotifyOfPropertyChange("SelectedFoo");
        NotifyOfPropertyChange("CanRemove");
        LoadRelatedBars();
    }
}

最佳答案

我经常使用这种技术,我觉得很舒服。
我发现虚拟机对自己的状态变化使用react非常好,不需要外部参与者(顺便说一下是 View ,但也可能是另一个组件)来设置新状态,然后向虚拟机发出状态是改变了。

但是,如果您真的想要,您可以使用 Message.Attach 附加属性将 View 中的事件 Hook 到 VM 中的操作:

cal:Message.Attach="[Event SelectionChanged] = [OnSelectionChangedAction]"

(另见 https://caliburnmicro.com/documentation/actions)

关于silverlight - 使用 Caliburn.Micro 将 SelectionChanged 绑定(bind)到 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4041233/

相关文章:

c# - C#中通过反射创建匿名对象

c# - Windows Phone 应用程序和桌面应用程序之间的通信方式

c# MVVM ViewModel 数据在每次访问 View 时都会重置

c# - 无法从父 View 模型WPF MVVM应用程序的弹出窗口中获取值

wpf - Validation.HasError附加属性

.net - Silverlight DataGrid 中的列对齐

c# - 如何查看 silverlight 项目中部分类的其余部分?

c# - 将米转换为公里并在 Viewmodel 中格式化值

c# - WPF - Caliburn 微事件触发器,以控制作为参数

prism - 在 Prism 和 Caliburn 之间进行选择