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

WPF实现类似MDI子窗体的功能 在我的上一篇博客中 http://blog.csdn.net/soft2buy/article/details/5479946,提到了用UserControl做为WPF的“MDI子窗体”。今天偶然发现 XCeed 开发的Extended WPF Toolkit里面有个ChildWindow窗体可以做为MainWindow的子窗体。ChildWindow也是从UserControl继乘的。 先看 阅读详情

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关闭了"
);
}


}
}

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

FFMediaToolkit:FFMediaToolkit使用FFmpeg本机库的.NET跨平台视频解码器编码器库。 它支持视频帧提取,读取流元数据并从位图创建FFmpeg支持的任何格式的视频 FFMediaToolkit FFMediaToolkit是一个用于创建和读取视频文件的.NET库。 它通过绑定使用本机FFmpeg库。 产品特点 对FFmpeg支持的多种格式的视频进行解码/编码。 按帧索引或时间戳访问任何视频。 根据具有元数据,像素格式,比特率,CRF,FPS,GoP,尺寸和其他编解码器设置的图像创建视频。 支持阅读多媒体章节和元数据。 跨平台-在.NET Core或.NET Framework项目中,可在Linux,Windows和macOS上运行。 1获取帧所需的时间取决于视频流中关键帧的数量(请参阅 ) 2在可变帧频视频中不支持按索引访问帧。 代码样本 将所有视频帧提取为PNG文件 int i = 0 ; var file = MediaFile . Open ( @" C:\videos\movie.mp4 " ); while ( file . Video . TryReadNextFrame ( out var imageData )) { imageData . ToBitmap (). Save ( $@" C:\images\f 立即下载

相关推荐

FFmpeg视频解码器(雷霄骅课堂PPT)

(对优秀的致敬)1、视频解码知识;2、VC下FFmpeg开发环境的搭建;3...... 【相关资源只为技术交流,如有侵权请及时告知,相关资源将立即下架】

使用WPF toolkit--Charts使你的数据展现更加形象

今天在wooboo上看我们移动广告的收入情况时,发现上面的那个图表挺好看的,这个图表是用flex做的,查了下还挺有名,叫fusionchart,有免费版本和收费版本。 (flex上有名的fusion chart) 虽然.net没有提供线程的wpf/silverlight图表控件,但是在wpf/silverlight toolkit中包含了常用实用控件:AreaSeries,PieSeries,L...

weixin_30752699的博客 390

Android-FFmpeg-Images-Video:使用 FFmpeg 编码图像到视频

Android-FFmpeg-Images-Video 使用 FFmpeg 编码图像到视频 欢迎来到 Android-FFmpeg-Images-Video wiki! 我们想使用ffmpeg来实现功能将android中的一些图像编码到带有一些音乐的视频中,或者将现有视频吐到许多图片中,然后我们添加我们的音乐来制作一个新视频。

FFMediaToolkit 开源项目使用教程

FFMediaToolkit 开源项目使用教程 1. 项目介绍 FFMediaToolkit 是一个跨平台的视频解码/编码库,专为 .NET 开发。它利用 FFmpeg 的本地库,支持多种视频格式的解码和编码,以及视频帧的提取、流元数据的读取和从位图创建视频等功能。该项目遵循 MIT 许可证,适合用于开发多媒体处理应用。 2. 项目快速启动 安装 首先,通过 NuGet 安装 FFMediaToo...

gitblog_00053的博客 698

Extended WPF Toolkit高级功能解析:RichTextBoxFormatBar、Wizard、ChildWindow等组件实战

Extended WPF Toolkit 是一个强大的WPF扩展工具包,提供了超过40个专业控件来增强WPF应用程序的开发体验。作为WPF开发者必备的工具集,它已经获得了超过100万次的下载量,证明了其在WPF开发社区中的重要性。 ## 🎯 为什么选择Extended WPF Toolkit? Extended WPF Toolkit 填补了WPF原生控件的功能空白,提供了丰富的UI组件和交

gitblog_00573的博客 761

WPF子窗体:ChildWindow

wpf的子窗体选择有很多种,如最常见的是项目新建窗体(Window)作为子窗体 ,或者新建wpf用户控件(UserControl)。而其实利用Xceed.Wpf.Toolkit.dll 可以轻松布局如下: 第一步:引用Xceed.Wpf.Toolkit.dll。 第二步:在XAML引用名称空间: xmlns:xctk="clr-namespace:Xceed.Wp...

weixin_33933118的博客 611

[转载]Mvvm Light Toolkit for wpf/silverlight系列

一步一步打造自己的Silverlight 初始屏幕 做了一段时间的Silverlight开发,已经厌倦了Silverlight默认的千篇一律的初始屏幕,突然想打造一个自己的Silverlight初始屏幕。网上虽然有一些资料,但是大多跟MSDN上的内容差不多;MSDN对Silverlight初始屏幕也有比较全面的讲解,不过有点太理论... 201...

weixin_33858249的博客 129

MvvmLight学习篇—— Mvvm Light Toolkit for wpf/silverlight系列(导航)

系列一:看的迷迷糊糊的 一、Mvvm Light Toolkit for wpf/silverlight系列之准备工作 二、Mvvm Light Toolkit for wpf/silverlight系列之搭建mvvmlight开发框架 三、Mvvm Light Toolkit for wpf/silverlight系列之数据绑定 四、Mvvm Light Toolkit for wp...

weixin_34258838的博客 251

Mvvm Light Toolkit for wpf/silverlight系列之Messenger

在开发Wpf/SL应用时,经常会遇到不同页面和窗体之间的参数传递的问题。对于这类问题,我们一般通过事件实现数据传递,也可以定义全局静态变量来进行数据共享。这里我们则使用了另外一种非常高效而优雅的方法来进行消息传递,这里我称之为Messenger,事实上,Messenger并非mvvm的专利,我们可以把它看作一种设计模式,你可以在其它.net程序中使用它。   一、Mvvm Light

sam1012的专栏 698

【转】Mvvm Light Toolkit for wpf/silverlight系列之Messenger

在开发Wpf/SL应用时,经常会遇到不同页面和窗体之间的参数传递的问题。对于这类问题,我们一般通过事件实现数据传递,也可以定义全局静态变量来进行数据共享。这里我们则使用了另外一种非常高效而优雅的方法来进行消息传递,这里我称之为Messenger,事实上,Messenger并非mvvm的专利,我们可以把它看作一种设计模式,你可以在其它.net程序中使用它。 一、Mvvm Light Mess...

weixin_30326741的博客 116

Microsoft Silverlight 3 Toolkit October 2009

今天早上,来到公安厅,习惯性地到codeplex上看了一下,发现Silverlight 3 Toolkit已经悄然更新了。 Codeplex:Silverlight Toolkit 粗略看了一下,添加了拖拽支持和一些控件的皮肤,大家快去看一下吧。 另:ChildWindow弹出窗口的皮肤还没弄懂怎么用,大家帮忙看看吧。 转载于:https://www.cnblogs.com/tiscs...

weixin_30604651的博客 92

Mvvm Light Toolkit for wpf/silverlight系列之Messenger[zhuan]

在开发Wpf/SL应用时,经常会遇到不同页面和窗体之间的参数传递的问题。对于这类问题,我们一般通过事件实现数据传递,也可以定义全局静态变量来进行数据共享。这里我们则使用了另外一种非常高效而优雅的方法来进行消息传递,这里我称之为Messenger,事实上,Messenger并非mvvm的专利,我们可以把它看作一种设计模式,你可以在其它.net程序中使用它。 一、Mvvm Light Mess...

weixin_34198881的博客 92

WPF/Silverlight深度解决方案:(十三)完美自定义之ChildWindow

ChildWindow在所有应用领域中都是必不可缺的好工具,小到一个弹出的确认对话框;大到包含众多复杂参数、选项及数据列表的资源窗口,都可以通过它来分类实现。ChildWindow的好处是可以实现拖动及伸缩达到随意布局,更高级的同样可以实现类似最大化、最小化等高级布局功能。 目前Silverlight3.0中自带的ChildWindow感觉仅仅是作为一个富Dialog的范畴应用,我们可以通过在项...

weixin_33955681的博客 236

FFMediaToolkit:多媒体处理的强大工具

FFMediaToolkit:多媒体处理的强大工具 项目介绍 FFMediaToolkit 是一个用于创建和读取多媒体文件的 .NET 库。它通过 FFmpeg.Autogen 绑定的原生 FFmpeg 库实现功能。尽管项目目前不推荐用于生产环境,但它提供了丰富的多媒体处理功能,适用于开发者和爱好者进行多媒体文件的解码、编码、帧提取等操作。 项目技术分析 FFMediaToolkit 的核心技术基...

gitblog_00241的博客 1156
上一篇: Silverlight中同步调用WebClient的解决办法,是同步!
下一篇: 关于在Silverlight中调用C++编写的DLL的问题
cgstian
博客等级 码龄18年 11粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值