在使用WPF的时候,我们经常会用到窗体之间传值,下面示例主窗口传值到子窗口,子窗口传值到主窗口的方法。

一、主窗口向子窗口传值

主窗口向子窗口传值主要方法就是在子窗口建立一个接收主窗口值的变量,然后实现传值。

主窗口的Xaml:

<Grid>
<TextBox x:Name="tb_message" HorizontalAlignment="Left" Height="35" Margin="232,80,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="360" FontSize="16"/>
<Button Content="向子窗体传值" FontSize="20" HorizontalAlignment="Left" Margin="342,179,0,0" VerticalAlignment="Top" Width="124" Height="34" Click="Button_Click"/>
</Grid>

视图:

主窗口的后台:

    public partial class MainWindow : Window
{ public MainWindow()
{
InitializeComponent();
} private void Button_Click(object sender, RoutedEventArgs e)
{
child_window child_Window = new child_window();
child_Window.test_str = tb_message.Text;
child_Window.Show();
this.Close();
}
}

子窗口的Xaml:

    <Grid>
<TextBlock x:Name="tb_receive" HorizontalAlignment="Left" Margin="339,75,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Height="29" Width="316"/>
<Button Content="接收来至主窗口传来的值:" FontSize="15" HorizontalAlignment="Left" Margin="83,75,0,0" VerticalAlignment="Top" Width="189" Height="29" Click="Button_Click"/>
</Grid>

视图:

子窗口后台:

    public partial class child_window : Window
{
public string test_str { get; set; } public child_window()
{
InitializeComponent();
} private void Button_Click(object sender, RoutedEventArgs e)
{
tb_receive.Text = test_str;
}
}

传值效果图:

二、子窗口向主窗口传值

子窗体向主窗体传值主要是通过委托来执行的。

主窗体的Xaml:

<Grid>
<Button Content="打开子窗口:" FontSize="15" HorizontalAlignment="Left" Margin="43,78,0,0" VerticalAlignment="Top" Width="287" Height="39" RenderTransformOrigin="0.5,0.5" Click="Button_Click">
</Button>
<TextBlock x:Name="tb_recevie" HorizontalAlignment="Left" Margin="395,78,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Height="39" Width="349"/>
</Grid>

视图:

主窗体的后台:

    public partial class MainWindow : Window
{
public void Recevie(string value)
{
tb_recevie.Text = value;
} public MainWindow()
{
InitializeComponent();
} private void Button_Click(object sender, RoutedEventArgs e)
{
child_window child_Window = new child_window();
child_Window.sendMessage = Recevie;
child_Window.Show();
}
}

子窗体的Xaml:

    <Grid>
<TextBox x:Name="tb_send" HorizontalAlignment="Left" Height="33" Margin="230,101,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="329"/>
<Button Content="向主窗体传值" FontSize="15" HorizontalAlignment="Left" Margin="317,181,0,0" VerticalAlignment="Top" Width="164" Height="27" Click="Button_Click"/>
</Grid>

视图:

后台代码:

    public partial class child_window : Window
{
public delegate void SendMessage(string value);
public SendMessage sendMessage;
public child_window()
{
InitializeComponent();
} private void Button_Click(object sender, RoutedEventArgs e)
{
sendMessage(tb_send.Text);
}
}

WPF中实现两个窗口之间传值的更多相关文章

  1. 使用Delegate在两个ViewController之间传值

    以下就实现了使用Delegate在两个ViewController之间传值,这种场景一般应用在进入子界面输入信息,完后要把输入的信息回传给前一个界面的情况,比如修改用户个人信息,点击修改进入修改界面, ...

  2. iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)

    iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)   使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值: 先说一下思想: ...

  3. C# Winform窗口之间传值的多种方法浅析(转)

    摘要http://www.jb51.net/article/63837.htm 这篇文章主要介绍了C# Winform窗口之间传值的多种方法浅析,本文起讲解了通过构造器传值.通过属性传递.通过事件携带 ...

  4. 使用Block在两个界面之间传值

    首先,创建两个视图控制器,在第一个视图控制器中创建一个UILabel和一个UIButton,其中UILabel是为了显示第二个视图控制器传过来的字符串,UIButton是为了push到第二个界面. 第 ...

  5. [转]ASP.NET MVC中的两个Action之间值的传递--TempData

    本文转自:ASP.NET MVC中的两个Action之间值的传递--TempData 一. ASP.NET MVC中的TempData 在ASP.NET MVC框架的ControllerBase中存在 ...

  6. JS 从一个字符串中截取两个字符串之间的字符串

    /************************************************* 函数说明:从一个字符串中截取 两个字符串之间的字符串 参数说明:src_str 原串, start ...

  7. WPF中使用WindowChrome美化窗口过程中的一个小问题

    WPF中使用WindowChrome美化窗口,在园子里有几篇不错的文章,我也是参考练习过程中发现的问题,并记录下来. 在看过几篇教程后,给出的窗口很多出现这样一个问题,如果设置了窗口标题栏的高度大于默 ...

  8. ASP.NET MVC中的两个Action之间值的传递--TempData

    一. ASP.NET MVC中的TempData 在ASP.NET MVC框架的ControllerBase中存在一个叫做TempData的Property,它的类型为TempDataDictiona ...

  9. 在WPF中合并两个ObservableCollection

    WPF中的ObservableCollection是一个非常常用的集合对象,我们可以通过将它绑定到ListBox之类的集合控件上时,当集合发生变更时,会同步更新到界面上.但是,有的时候我们需要合并两个 ...

随机推荐

  1. 20个Flutter实例视频教程-第07节: 毛玻璃效果制作

    视频地址: https://www.bilibili.com/video/av39709290/?p=7 博客地址: https://jspang.com/post/flutterDemo.html# ...

  2. 接口开发之PHP创建XML文件

    用PHP的DOM控件来创建输出 输出的格式为XML 接口开发的相关文件及说明 <?php header("Content-type: text/xml");//头文件非常重要 ...

  3. 带emoji表情弹出层的评论框,semantic+emoji picker,java.sql.SQLException: Incorrect string value: '\xF0\x9F..'

    在自己做一个项目玩时,在做评论的时候. 选中了semantic.js原型,这个在国内用的不是很多,但是在github上star数量很高,想当初我想找一个js框架是就在上面找的. semantic中文网 ...

  4. js引用类型的赋值

    在开发中,有时候需要将数组或者对象的值赋予其他另一个变量,但是两个变量之间会相互影响,因为在将引用类型的值赋给其他变量时,赋予的其实是内存中的存储地址 var arr = [1,2,3,4,5] va ...

  5. 洛谷 - P2051 - 中国象棋 - 简单dp

    https://www.luogu.org/problemnew/show/P2051 一点都不简单的简单dp. 还是从旧行转移到新行,而不是考虑新行从哪些旧行转移吧. #include<bit ...

  6. JS鼠标响应事件经过、移动、点击示例介绍

    原文: http://www.jb51.net/article/41124.htm onMouseDown 按下鼠标时触发 onMouseOver 鼠标经过时触发 onMouseUp 按下鼠标松开鼠标 ...

  7. 51nod 1449 砝码称重【天平/进制】

    题意: 给你w,n,问你在w^0,w^1,w^2...各种一个,问你能不能用这些砝码和重量为m的东西放在天平上使得天平平衡: 思路: 这个很容易联想到进制: 如果把m放在是一边的话,其实对于砝码就是纯 ...

  8. 計蒜客/數正方形(dp)

    題目鏈接:https://nanti.jisuanke.com/t/44 題意:中文題誒~ 思路: 用dp[i][j]存儲以(i, j)爲左上定點的最大正方形變長,從右下角網左上角一次計算所有頂點: ...

  9. centos 7 安装pip和pip3

    首先安装epel扩展源: yum -y install epel-release 更新完成之后,就可安装pip: yum -y install python-pip 安装完成之后清除cache: yu ...

  10. ssrs 小技巧

    1. 使用 RowNumber() 增加行号 =RowNumber("DataSet1") 2. 单双行 变色 =iif(RowNumber(Nothing) Mod 2, &qu ...