stackpanel

WPF仿网易云音乐系列(三、播放进度条+控制按钮)

丶灬走出姿态 提交于 2021-01-02 15:27:41
原文: WPF仿网易云音乐系列(三、播放进度条+控制按钮) 一.简介   上一篇,咱们基本把左侧导航栏给搞定,这一篇文章,开始来做一下播放进度条和控制按钮;老规矩,咱们先来看一下原版的效果: 首先,它这个专辑图片,有一个按钮效果,鼠标移入会显示出伸缩箭头;移出后消失,另外,点击此按钮后,弹出播放器歌词页面;歌词页面后面再说,先来看看按钮效果,如下: 还有就是音量按钮了,点击音量按钮,会弹出音量设置面板。面板中存放音量进度条;如下: 特殊的就这两个,下面开始来看一下怎么实现; 二.正文    专辑图片按钮   此按钮看上去可能有点复杂,实际实现起来很简单,咱们可以利用image上面放一个按钮来实现;然后设置鼠标事件,默认按钮为Hidden,当鼠标移入时,设置Visibility = Visibility,代码如下: xaml代码: 1 < Image Source ="/CloudMusic;component/Images/AlbumCover/jay.jpg" HorizontalAlignment ="Center" Grid.Column ="0" Width ="60" 2 Height ="60" MouseEnter ="Image_MouseEnter" Margin ="1" /> 3 < Button x:Name ="LrcMaxBtn" Margin ="1"

在WPF中嵌入WebBrowser可视化页面

别来无恙 提交于 2020-12-19 18:09:01
  无论是哪种C/S技术,涉及数据可视化就非常的累赘了,当然大神也一定有,只不过面向大多数人,还是通过网页来实现,有的时候不想把这两个功能分开,一般会是客户的原因,所以我们打算在WPF中嵌入WebBrowser,然后使用ECharts 完成复杂的图表展示,其功能不亚于一个名为Devexpress的图标库,而且这东西还收费(呵呵),本文就对WebBrowser+ECharts进行了演示。   首先下载一下Echats.js文件以及Jquery文件并且创建一个Html页面,在我们项目的bin文件夹中。 在html中编辑,其中包括了几个方法,是对C#代码进行访问的。 <! DOCTYPE html > < html lang ="zh-cn" xmlns ="http://www.w3.org/1999/xhtml" > <!-- saved from url=(0013)about:internet --> < head > < meta charset ="utf-8" http-equiv ="X-UA-Compatible" content ="IE=5,6,7,8,9,10,11, chrome=1" /> < title > ECharts </ title > </ head > < body > < h1 > html页面 </ h1 > < button Onclick

MVVMLight学习笔记(二)---MVVMLight框架初探

可紊 提交于 2020-12-19 04:53:03
一、MVVM分层概述 MVVM中,各个部分的职责如下: Model: 负责数据实体的结构处理,与ViewModel进行交互; View: 负责界面显示,与ViewModel进行数据和命令的交互; ViewModel: 负责前端视图业务级别的逻辑结构组织,并将其反馈给前端。 二、MVVMLight框架初探 通过NuGet安装MVVM Light 框架后,我们新建的Wpf项目中会自动生成一个ViewModel文件夹,里面有MainViewModel.cs和ViewModelLocator.cs两个文件。 下面我们就首先分析下这两个文件的内容: MainViewModel.cs文件分析: MainViewModel.cs文件中只有一个类MainViewModel,该类是主窗口MainWindow对应的ViewModel,继承自类ViewModelBase ViewModelBase类又继承类ObservableObject,同时实现ICleanup接口 ObservableObject类实现INotifyPropertyChanged接口,用于通知属性的改变 由此分析,我们可以得出以下一般结论: 当我们定义一个自己的ViewModel时,一般让自定义ViewModel继承自ViewModelBase类,这样当ViewModel中属性发生变化的时候,就可以自动通知对应的VIew。

【WPF学习】第五十八章 理解逻辑树和可视化树

ⅰ亾dé卋堺 提交于 2020-12-12 15:31:58
  在前面章节中,花费大量时间分析了窗口的内容模型——换句话说,研究了如何在其他元素中嵌套元素,进而构建完整的窗口。   例如,考虑下图中显示的一个非常简单的窗口,该窗口包含两个按钮。为创建该按钮,在窗口中嵌套了一个StackPanel控件。在StackPanel控件中,放置了两个Button控件,并且在每个按钮中可以添加所选择的内容。   下面是该窗口的标记: < Window x:Class ="SimpleWindow.MainWindow" xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml" Title ="MainWindow" Height ="301.316" Width ="306.579" > < StackPanel Margin ="5" > < Button Padding ="5" Margin ="5" Click ="cmd_Click" > First Button </ Button > < Button Padding ="5" Margin ="5" Click ="cmd_Click" > Second Button </ Button > </

Winform开发中的困境及解决方案

我的梦境 提交于 2020-10-24 01:45:35
在我们开发各种应用的时候,都会碰到很多不同的问题,这些问题涉及架构、模块组合、界面处理、共同部分抽象等方面,我们这里以Winform开发为例,从系统模块化、界面组件选择、业务模块场景划分、界面基类和辅助类处理、代码生成工具辅助开发等方面介绍在实际项目开发过程中碰到的困境和相关的解决方案,以便分析其中是如何逐步提高效率和整体用户体验的。 1、系统模块化 软件和建筑工程很类似,都是需要构建一个庞大而功能完整的一个系统,而工程化也意味着需要多人协作,那么就需要把一个庞大的系统横向或者纵向划分为各个可以独立施工完成的模块,虽然各个模块之间有所衔接或者交互,但是基本上可以以模块化的方式来构建,这个也是工程化开发的精髓所在。 以一个软件管理系统为例,我们尽可能把精力焦点放在客户的业务需求上,而对于常规的如权限控制、字典管理等一些常用的内容,由于它们的处理逻辑在特定领域上基本上比较固定一些,可以尽可能独立并重复使用, 而有时候,以某个特定的业务来说,同时很多处理规则也是不变的,因此也可以以业务模块的方式来划分,从而类似通用模块的方式重复使用。 模块化类似小孩子搭积木的方式构建一个所要的形状,虽然软件和建筑在这方面肯定更加复杂化,但是模块化系统是大势所趋,也是简化开发、易于维护、提高系统健壮性的重要举措。 2、界面组件选择 在Winform内置的传统样式里面,虽然提供了很多很好的界面组件

利刃 MVVMLight 5:绑定在表单验证上的应用

橙三吉。 提交于 2020-10-04 07:07:38
表单验证是MVVM体系中的重要一块。而绑定除了推动 Model-View-ViewModel (MVVM) 模式松散耦合 逻辑、数据 和 UI定义 的关系之外,还为业务数据验证方案提供强大而灵活的支持。 WPF 中的数据绑定机制包括多个选项,可用于在创建可编辑视图时校验输入数据的有效性。 常见的表单验证机制有如下几种: 验证类型 说明 Exception 验证 通过在某个 Binding 对象上设置 ValidatesOnExceptions 属性,如果源对象属性设置已修改的值的过程中引发异常,则抛出错误并为该 Binding 设置验证错误。 ValidationRule 验证 Binding 类具有一个用于提供 ValidationRule 派生类实例的集合的属性。这些 ValidationRules 需要覆盖某个 Validate 方法,该方法由 Binding 在每次绑定控件中的数据发生更改时进行调用。 如果 Validate 方法返回无效的 ValidationResult 对象,则将为该 Binding 设置验证错误。 IDataErrorInfo 验证 通过在绑定数据源对象上实现 IDataErrorInfo 接口并在 Binding 对象上设置 ValidatesOnDataErrors 属性,Binding 将调用从绑定数据源对象公开的 IDataErrorInfo

WPF - How to get only one expander expanded at any one time

 ̄綄美尐妖づ 提交于 2020-08-27 05:24:07
问题 I've got a StackPanel with a group of expanders in, how do I set it so that only expander is expanded at any one time? Cheers AW 回答1: I didn't really want to do it like this as it required putting code (C#) in the class behind file for the window (I'm trying to avoid this completely by use of ViewModels etc). Ideally I would have described this in XAML. I hooked up every Expander 'Expanded' event I was interested in and did the following: private void HandleExpanderExpanded(object sender,

WPF - How to get only one expander expanded at any one time

我怕爱的太早我们不能终老 提交于 2020-08-27 05:23:02
问题 I've got a StackPanel with a group of expanders in, how do I set it so that only expander is expanded at any one time? Cheers AW 回答1: I didn't really want to do it like this as it required putting code (C#) in the class behind file for the window (I'm trying to avoid this completely by use of ViewModels etc). Ideally I would have described this in XAML. I hooked up every Expander 'Expanded' event I was interested in and did the following: private void HandleExpanderExpanded(object sender,

你想要的WinForm界面开发教程在这里

纵饮孤独 提交于 2020-08-17 05:00:13
DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅、美观且易于使用的应用程序。DevExpress WinForm v20.1全新发布,想要体验? 点击下载>> 在很多时候,我们做一些非常规化的界面的时候,往往需要创建一些用户控件,在其中绘制好一些基础的界面块,作为后续重复使用的一个单元,用户控件同时也可以封装处理一些简单的逻辑。在开发Winform各种类型项目,我都时不时需要定制一些特殊的用户控件,以方便在界面模块中反复使用。我们一般是在自定义的用户控件里面,添加各种各样的界面控件元素,或者封装一些特殊的函数处理共外部调用等。本篇随笔主要介绍基于DevExpress的Winform开发经验,介绍一个类似看板信息的用户控件,并在TabelLayout和StackLayout布局控件中进行展示。 一、用户控件界面的处理 在偶尔的一个场合下,看到一个牙医管家的软件界面做的非常不错,其中有一个预约列表的界面感觉非常好,如下界面所示。 其中它的每个用户信息列表里面,都是一个综合信息的展示,非常直观,估计应该是用户自定义控件做的。 在其中里面,有不同的字体,各式图标,以及内容的信息展示, 这个我在DevExpress的列表控件里面,没有看到可以如此定义列表内容的,在DevExpress的GridView里面有一个看板模板的定义有点接近