【发布时间】:2014-08-18 21:45:21
【问题描述】:
假设我正在使用 FlowDocumentPageViewer,并且我想使用 find 方法。 如何在遵循 MVVM 规则的同时使用它?我做了一些搜索,似乎解决方案是混合的。
有人建议你把View聚合到ViewModel,然后用它来调用需要的方法:
例如:
private MainWindow mw;
public MainWindowViewModel(MainWindow mw)
{
this.mw = mw;
}
public void Find()
{
mw.flowDocument.find();
}
但其他人建议在视图中使用这些方法(代码隐藏)是可以的,因为 ViewModel 不应该调用视图特定的方法。
最后,我听说过使用附加行为来解决这个问题,但我没有深入研究过该方法是否合适。
我真的不知道哪种方法是正确的,或者如果所有这些方法都不正确,如何处理这种情况。如果您能给我一些关于首选哪种方法以及原因的见解,我将不胜感激。
提前感谢您的回答。
【问题讨论】:
-
好吧,在这里真正帮助您:您打算如何调用该方法?它是绑定在按钮上的吗?然后使用命令。它是基于 PropertyChanged 事件自动执行的吗?然后只需从属性的 ViewModel 中调用它。如果您愿意,请提供有关整体解决方案的更多信息。
-
@Xcalibur37 不,它没有绑定到按钮。这是一种与名为 find 的视图相关联的方法。它是 FlowDocumentPageViewer 的一部分。
标签: c# wpf mvvm view viewmodel