简体   繁体   English

WPF MVVM - 如何将两个变量从与第一个 window 关联的 ViewModel 传递到与第二个 window 关联的第二个 ViewModel?

[英]WPF MVVM - How can I pass two variables from the ViewModel associated with the first window to the second ViewModel associated with the second window?

I don't want to use Prism or MVVM Light solutions and would like to pass two parameters to the second window?我不想使用 Prism 或 MVVM Light 解决方案,想将两个参数传递给第二个 window? How could I do that?我怎么能那样做? I was looking for some information on this topic, but unfortunately most of them use packages...我一直在寻找有关此主题的一些信息,但不幸的是,其中大多数都使用包...

try this:尝试这个:

App.xaml App.xaml

<Application.Resources>
    <vm:MainViewModel x:Key="YourViewModel" />
</Application.Resources>

MainWindow.xaml主窗口.xaml

<Window x:Class="ABC.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ABC"
        DataContext="{StaticResource YourViewModel}"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <TextBlock Text="{Binding SomeVar}"/>
    </Grid>
</Window>

SecondWindow.xaml SecondWindow.xaml

<Window x:Class="ABC.SecondWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:ABC"
        DataContext="{StaticResource YourViewModel}"
        mc:Ignorable="d"
        Title="SecondWindow" Height="450" Width="800">
    <Grid>
        <TextBox Text="{Binding SomeVar}"/>
    </Grid>
</Window>

I guess you could just send parameters in the constructor of the second window, wherever you are creating your window.我想你可以在第二个 window 的构造函数中发送参数,无论你在哪里创建 window。

var newwin = new SecondWindow("second param is int", 42 );
newwin.Show();

And then just create an another constructor for your window:然后为您的 window 创建另一个构造函数:

public SecondWindow(string a, int b) : this()
{
    var secondVM = (SecondViewModel)DataContext;
    secondVM.IAmSendingYouTwoParams( a,b);
... 
}
        

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM