【问题标题】:A viewmodel's role beyond databinding?视图模型在数据绑定之外的作用?
【发布时间】:2011-03-02 09:44:19
【问题描述】:

对于视图模型在数据绑定之外的作用,我有点困惑。我有一个内置 Silverlight 的菜单。该菜单有 x 个在运行时确定的菜单项。我想添加的功能之一是每个菜单项在悬停时都有不同的文本颜色。

视图的作用是拥有颜色选择器方法还是视图应该在其背后的代码中处理这个?

【问题讨论】:

    标签: c# .net silverlight mvvm silverlight-4.0


    【解决方案1】:

    如果可能,通常我会在 XAML 中保留颜色/样式 - 我对 ViewModel 的看法是,它负责以 View 可以使用的方式提供来自模型的所有数据(即非图形内容)。

    如果是复杂的逻辑决定了颜色并且它要被重用——我可能会想把它放在 ViewModel 中。

    【讨论】:

    • 我会尝试确定每种颜色代表什么抽象状态,并让 VM 执行逻辑以生成状态,然后可以通过触发器或 ValueConverter 将其呈现为颜色(应该在XAML)。红绿灯不显示红色/黄色/绿色,它显示停止/警告/开始。如果它是更复杂的颜色(亮度传达值?)我更喜欢参数化的 ValueConverter,因为它可以将显示逻辑保留在视图中,即使它不在 XAML 中。
    • 我完全支持 Dan Bryant。
    【解决方案2】:

    数据绑定过程将视图模型用作“安全”方式,允许您对特定控件看到的记录进行排序/过滤/分组,而无需(必然)更改实际绑定的数据集(即是,除非/直到你告诉它)。 (FMI 读取 Bea's article here。)

    我同意 Goblin 的观点,因为在 XAML 中最好将颜色等表示方面分开保存,例如在该控件使用的 DataTemplate 中。

    【讨论】:

    • 两个很好的答案,链接的绿色勾号!
    猜你喜欢
    • 2013-06-19
    • 1970-01-01
    • 2017-09-24
    • 2021-11-07
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2016-06-14
    相关资源
    最近更新 更多