在MVVM WPF应用程序中.
你如何设置第二个Windows父级ViewModel?
例:
view1 - viewModel1
viewModel1的命令调用:
var view2 = new view2
Run Code Online (Sandbox Code Playgroud)
view2.Owner= <----这是问题所在.如何从这里获取view1作为所有者viewModel?
view2.Show()
Run Code Online (Sandbox Code Playgroud)
编辑:
请参阅下面接受的答案,然后阅读以下编辑内容.
我正在使用MVVM灯 - > http://mvvmlight.codeplex.com/ (真棒顺便说一句)
烘焙消息传递系统非常棒.我现在正在从viewmodel向我的视图发送一条消息,告诉它显示另一个窗口.
对于消息我当前在主视图中使用带有switch语句的字符串来确定要打开的视图; 但是我可能会修改也是MVVM light toolkit一部分的令牌.
谢谢!
我正在研究MVVM中的第一个项目,我选择使用MVVM Light Toolkit.我有一个GameViewModel在我的游戏主屏幕上处理业务.我需要找到如何在执行命令时将AdventurerView一个实例Adventurer作为参数打开一个新窗口(),绑定它AdventurerViewModel,并显示和返回数据.此窗口的实例将经常打开和关闭.我已经被困在这几天了,这让我发疯了.我想学习如何以MVVM友好的方式执行此操作,最好使用MVVM Light或纯XAML提供的工具.
我尝试过使用MVVM Light,ViewModelLocator但由于AdventurerView它是一个窗口,它将无法工作; 虽然程序仍在编译和运行,但它说"不能把窗口放在一个样式中".我可以改变一些东西让它起作用吗?或者是否有另一种方法在XAML中绑定它们?或完全是另一种方法?我真的很想能够继续前进.我也试过使用MVVM Light的信使无济于事(仍然没有解决View/ViewModel问题).
我只需要能够创建一个绑定的窗口AdventurerViewModel并显示/返回相应的数据.
AdventurerView.xaml目前处于默认状态,但我觉得如果我可以绑定可能有用的相应数据(DataContext).
AdventurerViewModel也很简单
class AdventurerViewModel : ViewModelBase
{
#region Members
private Adventurer _adv;
#endregion
#region Properties
public Adventurer Adv
{
get { return _adv; }
set { _adv = value; }
}
#endregion
#region Construction
public AdventurerViewModel(Adventurer adv)
{
this._adv = adv;
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
App.xaml底部有非工作的DataTemplate:
<Application StartupUri="MainWindow.xaml"
xmlns:views="clr-namespace:AoW.Views"
xmlns:vm="clr-namespace:AoW.ViewModels"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="AoW.App"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Application.Resources>
<vm:ViewModelLocator …Run Code Online (Sandbox Code Playgroud) 我是MVVM的新手并且使用MVVM Light学习它.
我在wpf中有一个带登录窗口的应用程序.当用户输入正确的凭据时,登录窗口应该关闭,并且应该打开一个新的MainWindow.登录部分已经正常工作,但如何打开新窗口并关闭当前(login.xaml)?
还必须为这个新的MainWindow提供一些参数.
任何人都可以把我放在正确的方向或提供一些信息吗?