8,757
社区成员
发帖
与我相关
我的任务
分享
非常感谢,就是你说的这个,能不能给个简单的例子或者有没有相关的资料,我折腾MVVM好几天了,就是卡在这里了。
另外我看SimpleMVVM的官方例子(最新版),发现View的cs文件写有很多按钮的事件,我觉得这样做把MVVM的概念搞混乱了,是否应该把View中的事件代码放在ViewModel中来处理更合理呢?[/quote]
View本身是一层,在里边写代码其实也无可厚非(只跟UI有关的代码),不过我觉得还是封起来比较好。
Behavior的例子:
public class CloseWindowAction : TriggerAction<System.Windows.DependencyObject>
{
protected override void Invoke(object parameter)
{
var w = System.Windows.Window.GetWindow(AssociatedObject);
if (w != null)
{
w.Close();
}
}
}
public class WindowClosingBehavior : Behavior<System.Windows.Window>
{
protected override void OnAttached()
{
AssociatedObject.Closing += AssociatedObject_Closing;
base.OnAttached();
}
void AssociatedObject_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
e.Cancel = (MessageBox.Show("确定要退出么?", AssociatedObject.Title, MessageBoxButton.OKCancel, MessageBoxImage.Warning) == MessageBoxResult.Cancel);
}
protected override void OnDetaching()
{
AssociatedObject.Closing -= AssociatedObject_Closing;
base.OnDetaching();
}
}
public class ExitApplicationBehavior : Behavior<System.Windows.Window>
{
protected override void OnAttached()
{
AssociatedObject.Closed += AssociatedObject_Closed;
base.OnAttached();
}
void AssociatedObject_Closed(object sender, EventArgs e)
{
Application.Current.Shutdown();
}
protected override void OnDetaching()
{
AssociatedObject.Closed -= AssociatedObject_Closed;
base.OnDetaching();
}
}
非常感谢,就是你说的这个,能不能给个简单的例子或者有没有相关的资料,我折腾MVVM好几天了,就是卡在这里了。
另外我看SimpleMVVM的官方例子(最新版),发现View的cs文件写有很多按钮的事件,我觉得这样做把MVVM的概念搞混乱了,是否应该把View中的事件代码放在ViewModel中来处理更合理呢?
Focusable="{Binding focused}"