【发布时间】:2012-08-12 10:37:14
【问题描述】:
对 MVVM 和用户控制事件有点困惑。
我的视图中有一个用户控件。它有两种模式,即阅读和编辑。 (文本模式)
<Grid
x:Name="LayoutRoot"
Background="Transparent">
<controls:MyUserControl
Mode="{Binding Path=TextMode,Mode=TwoWay}"
Text="{Binding Path=ReportText,Mode=TwoWay}"
</controls:MyUserControl>
</Grid>
当 TextMode 更改为“编辑”时,我想在电话应用程序栏中添加一个“保存”按钮,当单击“保存”按钮时,我想从用户控件中保存文本。我还想禁用“读取”视图中的保存按钮。 (即当 TextMode 为 'Read' 时)
执行此操作的正确 MVVM 方法是什么?我想到了两种方法:
1) 我正在考虑在用户控件上公开 ModeChanged 属性并将其传播到视图,然后添加“保存”按钮。 (但这是否违背了 MVVM 方式,即在代码中包含代码?)。
2) 处理依赖属性本身的 propertychanged,并从用户控件添加保存按钮。 (似乎不正确,因为应用程序逻辑混合在用户控件中)
我如何让视图模型参与其中?
什么是遵循 MVVM 的执行此类操作的好方法。
【问题讨论】:
标签: silverlight windows-phone-7 design-patterns mvvm user-controls