保健品网站制作,宿迁房产网签查询,移动网站模板,平面设计广告作品这篇文章还是在之前用Caliburn.Micro搭建好的框架上继续做的开发#xff0c;今天主要是增加了一个用户窗体ImageProcessView#xff0c;然后通过Treeview切换选择项之后在界面显示不同效果的图片。01—重要的知识点本篇内容基于CM框架编写#xff0c;涉及以下知识点#xf… 这篇文章还是在之前用Caliburn.Micro搭建好的框架上继续做的开发今天主要是增加了一个用户窗体ImageProcessView然后通过Treeview切换选择项之后在界面显示不同效果的图片。01—重要的知识点本篇内容基于CM框架编写涉及以下知识点①实现 INotifyPropertyChanged在mvvm开发模式中为了前台和后台更好的解耦合前台界面一般通过绑定属性的方式获取属性值而后台属性值变更后我们需要通知给前台视图这时候我们的属性值就需要实现INotifyPropertyChanged这个接口。由于StartViewModel继承了Caliburn.Micro.ScreenCaliburn.Micro.Screen实现了INotifyPropertyChanged所以StartViewModel这个类本身是拥有属性变更通知界面的功能的。但是我们添加的窗体ImageProcessViewModel除了它的构造函数是在StartViewModel中实例化拥有了INotifyPropertyChanged其它想要实现这个接口有两种方式-. 继承Caliburn.Micro.Screen即public class ImageProcessViewModel : Caliburn.Micro.Screen
-. 在nuget中引用PropertyChanged.Fody并在类之前添加 [AddINotifyPropertyChangedInterface]
这样我们的这个类中所有的属性变更后就会主动通知界面更新了②TreeView用法实例主要包括TreeView树列表构建以及事件附件 TreeView Grid.Row0 Grid.Column0 Grid.RowSpan1TreeViewItem HeaderTreeViewTreeViewItem HeaderTranslateTransform/TreeViewItem HeaderRotateTransform/TreeViewItem HeaderScaleTransform/TreeViewItem HeaderSkewTransform/TreeViewItem HeaderTransformGroup/TreeViewItem HeaderMatrixTransform//TreeViewItemTreeView.ItemContainerStyleStyle TargetType{x:Type TreeViewItem} Setter Propertycal:Message.Attach Value[Event Selected] [Action item_SelectedItemChanged($source,$eventArgs)]/
/Style/TreeView.ItemContainerStyle/TreeView
后台代码重点是如何获取当前选择的Item public void item_SelectedItemChanged(object sender, RoutedEventArgs e){TreeViewItem tvi e.OriginalSource as TreeViewItem;var selectedItem tvi.Header.ToString();switch (selectedItem){case TranslateTransform:MessageBox.Show(这是一个图片平移效果); Image1Show Visibility.Visible; break;case RotateTransform:MessageBox.Show(这是一个图片旋转效果); Image2Show Visibility.Visible; break;case ScaleTransform:MessageBox.Show(这是一个图片缩放效果); Image3Show Visibility.Visible; break;case SkewTransform:MessageBox.Show(这是一个图片扭转效果); Image4Show Visibility.Visible; break;case TransformGroup:MessageBox.Show(这是一个图片组合效果); Image5Show Visibility.Visible; break;case MatrixTransform:MessageBox.Show(这是一个图片矩阵效果); Image6Show Visibility.Visible; break;default: break;}}
③图片显示效果需要了解RenderTransform类主要实现以下6中效果一. RenderTransform类的成员1.TranslateTransform 平移效果2.RotateTransform 旋转效果3.ScaleTransform 缩放效果4.SkewTransform 扭转效果5.TransformGroup 组合效果6.MatrixTransform 是其他几个变形类的基类矩阵方式实现效果这里的代码较长可以下载项目源码查看.二. Visibility属性WPF的Visibility属性是个枚举变量有三种值Collapsed、Hidden、Visible。Collapsed与Hidden区别Hidden仅仅是属性设为不可视但是属性在画面上依然占有空间。然而使用Collapsed的话在不可视的基础上它还能将属性在画面上的占位符清除属性将彻底不影响画面namespace System.Windows
{public enum Visibility : byte{Visible 0,Hidden 1,Collapsed 2}
}
后台定义切记给属性添加get; set;权限不然界面不会更新 public Visibility Image6Show { get; set; } Visibility.Hidden;
在前台绑定就好Visibility{Binding Image6Show}
三. Image Stretch属性值详解namespace System.Windows.Media
{public enum Stretch{None 0,Fill 1,Uniform 2,UniformToFill 3}
}
None 保持原始尺寸图片会按原始大小显示Fill 缩放到目标尺寸宽高比不会保留 图片会按原始大小显示Uniform缩放到目标尺寸之内并保持原始宽高比。图片会按照设置的Width和Height显示比例会失调UniformToFill保持原始宽高比进行缩放以填充。如果两者的宽高比不同源会被剪切掉多余的部分。---------------------------------------------------------------------其它的知识点已经在之前讲解过不懂得话参考以下链接阅读C# WPF MVVM项目实战(进阶①)C# WPF框架Caliburn.Micro入门实例1C# 项目实战(经典)02—操作演示03—结尾项目源码网盘下载地址链接https://pan.baidu.com/s/1uP1Lw96Br1csLaF4B7ZKpw提取码: 右下角点击再看或者转发超过20个以后我会在留言区公布技术群添加小编微信zls20210502备注进群