WPF中的ChildWindow----WPF的toolkit使用

http://www.cnblogs.com/shiyue/archive/2011/04/07/2007830.html

Silverlight中有ChildWindow这个东西,上午想起来WPF中是否也有这个东西呢?
其实如果真用代码也是可以实现ChildWindow,可是有没有更便捷的方法呢?我想到了WPF的toolkit,发现新的版本中还真是有这么个控件。首先声明,这里是个控件,这个Silverlight里面的ChildWindow的实现方式不一样,Silverlight中如何实现不再赘述。因为silverlight中的childwindow的固定思维使对这个东西的使用走了弯路,迷惑了好一会,所以分享给大家。

首先需要下载wpftoolkitExtended WPF Toolkit Binaries。然后在项目中添加对WPFToolkit和WPFToolkit.Extended的引用:

在wpf窗口的<Window 节点中添加对命名空间的引用,加入一行

   
   
xmlns:extToolkit = " clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit.Extended "
然后在页面中添加一个childwindow控件,
复制代码
   
   
< extToolkit:ChildWindow x:Name = " childWindow " Visibility = " Hidden " Caption = " My Child Window " Width = " 456 " Closed = " childWindow_Closed " IsModal = " True " Height = " 253 " > < Grid Margin = " 10 " > < StackPanel Orientation = " Horizontal " Margin = " 8,8,8,0 " > < StackPanel.Background > < LinearGradientBrush EndPoint = " 0.5,1 " StartPoint = " 0.5,0 " > < GradientStop Color = " #FFF4F8FF " Offset = " 0 " /> < GradientStop Color = " White " Offset = " 1 " /> </ LinearGradientBrush > </ StackPanel.Background > < Button Width = " 65 " Margin = " 100,76.5,2,0 " x:Name = " okbtn " Click = " okbtn_Click " Content = " 获取值 " Height = " 40 " RenderTransformOrigin = " -0.354,0.525 " VerticalAlignment = " Top " d:LayoutOverrides = " Height " /> < Button Width = " 65 " Margin = " 50,76.5,2,0 " x:Name = " cancalbtn " Click = " cancalbtn_Click " Content = " 设置值 " Height = " 40 " VerticalAlignment = " Top " d:LayoutOverrides = " Height " /> </ StackPanel > </ Grid > </ extToolkit:ChildWindow >
复制代码
然后在后台就可以对这个控件进行操作了,
   
   
private void OpenChildWindow_Click( object sender, RoutedEventArgs e) { childWindow.Visibility = Visibility.Visible; childWindow.Show(); }

现将截图如下:
运行

打开childwindow:

获取label的值:


设置label的值:

子窗口关闭事件:



页面完整代码:

复制代码
   
   
< Window xmlns = " http://schemas.microsoft.com/winfx/2006/xaml/presentation " xmlns:x = " http://schemas.microsoft.com/winfx/2006/xaml " xmlns:extToolkit = " clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit.Extended " xmlns:d = " http://schemas.microsoft.com/expression/blend/2008 " xmlns:mc = " http://schemas.openxmlformats.org/markup-compatibility/2006 " mc:Ignorable = " d " x:Class = " blogtest.MainWindow " Title = " MainWindow " Height = " 480 " Width = " 640 " > < Grid > < Button Content = " 打开子窗口 " Height = " 40 " HorizontalAlignment = " Left " Margin = " 56,75,0,0 " x:Name = " OpenChildWindow " Click = " OpenChildWindow_Click " VerticalAlignment = " Top " Width = " 100 " /> < Label Height = " 28 " HorizontalAlignment = " Left " Margin = " 56,12,0,0 " x:Name = " label1 " VerticalAlignment = " Top " Width = " 273 " Content = " 初始值100 " /> < extToolkit:ChildWindow x:Name = " childWindow " Visibility = " Hidden " Caption = " My Child Window " Width = " 456 " Closed = " childWindow_Closed " IsModal = " True " Height = " 253 " > < Grid Margin = " 10 " > < StackPanel Orientation = " Horizontal " Margin = " 8,8,8,0 " > < StackPanel.Background > < LinearGradientBrush EndPoint = " 0.5,1 " StartPoint = " 0.5,0 " > < GradientStop Color = " #FFF4F8FF " Offset = " 0 " /> < GradientStop Color = " White " Offset = " 1 " /> </ LinearGradientBrush > </ StackPanel.Background > < Button Width = " 65 " Margin = " 100,76.5,2,0 " x:Name = " okbtn " Click = " okbtn_Click " Content = " 获取值 " Height = " 40 " RenderTransformOrigin = " -0.354,0.525 " VerticalAlignment = " Top " d:LayoutOverrides = " Height " /> < Button Width = " 65 " Margin = " 50,76.5,2,0 " x:Name = " cancalbtn " Click = " cancalbtn_Click " Content = " 设置值 " Height = " 40 " VerticalAlignment = " Top " d:LayoutOverrides = " Height " /> </ StackPanel > </ Grid > </ extToolkit:ChildWindow > </ Grid > </ Window >
复制代码

后台程序完整代码:

复制代码
   
   
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using Microsoft.Windows.Controls; namespace blogtest { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void OpenChildWindow_Click( object sender, RoutedEventArgs e) { childWindow.Visibility = Visibility.Visible; childWindow.Show(); } private void okbtn_Click( object sender, RoutedEventArgs e) { System.Windows.MessageBox.Show( " 获取的到的值为: " + label1.Content); } private void cancalbtn_Click( object sender, RoutedEventArgs e) { label1.Content = " 值被设置为50 " ; } private void childWindow_Closed( object sender, EventArgs e) { System.Windows.MessageBox.Show( " ChildWindow关闭了 " ); } } }
复制代码

欢迎广大园友共同探讨,本人技术水平有限,如有不足之处,还请园友多多批评指正,谢谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值