当前位置:网站首页 / AY梦 / 正文

[2022-12-8更新]AYUI7 更新记录

时间:2022年07月26日 | 作者 : aaronyang | 分类 : AY梦 | 浏览: 8749次 | 评论 4













AYUI7.7开发中 

2022年12月9日

7.7.6.9

修复AyFolderPicker 的DefaultPath 默认绑定上次的路径有问题,现在修复了

迁移了ayui8的转换器

image.png






2022年7月26日

AYUI.ColorAssistant DEMO新增 响应式代码转换工具

image.png

关于类型,注意引入

       xmlns:wd="clr-namespace:System.Windows.Controls;assembly=PresentationFramework"

                xmlns:th="clr-namespace:System.Windows;assembly=PresentationFramework"   xmlns:sys="clr-namespace:System;assembly=mscorlib"


示例资源类型

  <sys:Double x:Key="DataGridCol1_TimelineWidthAndHeight">10.00</sys:Double>        

        <th:CornerRadius x:Key="DataGridCol1_TimelineCorner">10</th:CornerRadius>

        <th:Thickness x:Key="DataGridCol1_TimelineMargin">0,18,0,0</th:Thickness>

转换后

image.png

<ResourceSetter ResourceValue="10,10,10,10" Scope="FindInUserControlResource" ResourceType="{x:Type th:CornerRadius}"  TargetName="DataGridCol1_TimelineCorner"/>

<ResourceSetter ResourceValue="0,18,0,0" Scope="FindInUserControlResource" ResourceType="{x:Type th:Thickness}"  TargetName="DataGridCol1_TimelineMargin"/>

<ResourceSetter ResourceValue="10" Scope="FindInUserControlResource" ResourceType="{x:Type sys:Double}"  TargetName="DataGridCol1_TimelineWidthAndHeight"/>

然后你放入

<AyVisualStateManager.AyVisualStateGroups>

<AyVisualStateGroup>

<AyVisualState MinWindowWidth="260" SetterMode="End">

<DataSetter Property="FrameworkElement.Visibility" Value="Collapsed" TargetName="svMenu"/>

<ResourceSetter ResourceValue="10,10,10,10" Scope="FindInUserControlResource" ResourceType="{x:Type th:CornerRadius}"  TargetName="DataGridCol1_TimelineCorner"/>

<ResourceSetter ResourceValue="0,18,0,0" Scope="FindInUserControlResource" ResourceType="{x:Type th:Thickness}"  TargetName="DataGridCol1_TimelineMargin"/>

<ResourceSetter ResourceValue="10" Scope="FindInUserControlResource" ResourceType="{x:Type sys:Double}"  TargetName="DataGridCol1_TimelineWidthAndHeight"/>

</AyVisualState>

</AyVisualStateGroup>

<AyVisualStateManager.AyVisualStateGroups>


AyVisualState 定义了一组指定窗体宽高size变化时候 执行的样式

            <r:AyVisualState MinWindowWidth="810" MaxWindowHeight="1000" SetterMode="Continue">

当窗体小于等于810 并且 高度大于1000时候,SetterMode有2个值,End表示 匹配到这组样式后,下面的 VisualState就不去判断了,如果时Continue,还会向下匹配组,可能会覆盖上面同key的资源值。

Min开头的时 小于等于的判断  Max开头的是大于的 判断


默认值如下

image.png






2022年7月11日  7.7.6.5

修复AyIconAllButton的Icon值变化,UI上不会更新的问题

AyIconAll新增LoadIcon(string icon) 手动更改icon的值,以为有时候绑定Icon无效

修复响应式 AyVisualStateManager 寻找window资源和usercontrol资源的 找不到的问题


AyForminput增加isFirstInitPassword,临时解决,密码框 第一次set密码框时没问题的,第二次赋值有问题,使用这个属性,第二次赋值之前设置为true,设置完后设置为false

 <control:AyFormInput MaxLength="20" isFirstInitPassword="{Binding isFirstInitPassword,Mode=TwoWay}" Grid.Row="4" IsPasswordBox="True" Grid.ColumnSpan="2" BorderBrush="#D9D9D9" Width="auto" Height="34" GridService.RowColumn="4 1" Password="{Binding FtpPwd,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}" HorizontalAlignment="Stretch" VerticalAlignment="Center">

            </control:AyFormInput>


           isFirstInitPassword = true;

                FtpPwd = "";

                isFirstInitPassword = false;


============


2022-3-24 

修复aycombobox 不可编辑时候验证的问题


==========

2022年3月18日

7.7.6.2

修复很多AyTable的默认不影响使用的绑定错误,添加触屏滚动类TouchScrolling的支持

用法 TouchScrolling.IsEnabled =true 原理使用touch的滚动模拟 鼠标的滚动 ,这个滚动不会滚动到顶部或者底部,屏幕发生位移,缺点开启后,鼠标拖拉滚动条有问题

 <ScrollViewer  IsManipulationEnabled="False" PanningMode="None" Padding="{TemplateBinding Padding}" TouchScrolling.IsEnabled="True">

                                    <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />

                            </ScrollViewer>

             ScrollViewer.HorizontalScrollBarVisibility="Disabled"

                 ScrollViewer.VerticalScrollBarVisibility="Auto">

 




2020-9-14

修复AyWrapPanelFill 某些情况父容器滚动条不出现的问题

设置:NeedInvalidateMeasure=true就行了。



2020-8-26

修复 aytableview的行详情

现在当是多选的时候,单击行会展开详情,再单击会关闭,可以展开多个行详情

当是单选的时候,单击行会展开详情,再单击会关闭上次展开的那个



2020年8月19日

TitleMargin,TitleForeground,TitleFontsize


<control:AyWindow  这里属性TitleBarHeight="32" TitleVisibility="Collapsed"  WindowEntranceBackgroundMode="0" Title="检">


 <Grid Margin="0,-32,0,0"  ClipToBounds="True" Background="Transparent">

            <TextBlock x:Name="tbTitle" Text="检"  FontSize="16" Foreground="White"   Margin="-10,-10,0,0" HorizontalAlignment="Left" VerticalAlignment="Center">

            </TextBlock>





AYUI7.6.6 beta

2020-4-21 

AyImagePreview增加 IsHiddenYingArea="True" 

永久不显示,鸟瞰图


2020-7-10 13:58:21

修复 AyCombobox关于tab键焦点的问题





2020-3-11

AyFilePicker增加IsLongPath,是否长路径,现在的返回的是文件名




======================AYUI7.6.5.5 beta===

2020-1-16

修改FluidWrapPanel控件

新增FluidMouseDragElementBehavior行为,让其支持 dragitem类的元素作为拖放的目标,这样摆放的单元就可以放入其他焦点元素,比如按钮

  <Grid x:Name="layout" GridService.Rows="* 30">
        <Image Name="imageFrame"
               Margin="4"
               Stretch="UniformToFill">
            <i:Interaction.Behaviors>
                <control:FluidMouseDragElementBehavior DragButton="Left"></control:FluidMouseDragElementBehavior>
            </i:Interaction.Behaviors>
        </Image>
        <StackPanel Grid.Row="1">
            <Button Content="手动挡" Click="Button_Click" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"></Button>
        </StackPanel>
    </Grid>

image.png








======================7.6.5.3发布 ===

2019-10-23 修复Ay表单控件,aycombobox在aylayer中验证后,不消失的问题

2019-7-24 修复AyTableView 全选可能存在重复数据的问题




======================7.6.5.2发布 ===

2019-7-17 12:14:25

修复AyDateBoxCalendar PickedDate第一次绑定显示问题

增加AyLayer的 动画方式关闭,非动画方式关闭,关闭时逻辑增加是否执行closed,现在自带的关闭,不会触发closed,所以现在在usercontrol的xaml.cs有4种关闭弹窗的方式,你可以取消按钮 this.CloseAyLayerNotTriggerClosed();保存按钮关闭时候调用回调的Closed的关闭方式 this.CloseParentAyLayer();


2019-7-16

修复aylayer弹层 拖到窗体外碰不到的问题


2019-7-10 

修复日期控件日期内存问题,更流畅,换了验证逻辑

还有其他几个问题


2019-6-11 

修复AyTableView,在HasRectangleSelection=true时候,日期控件焦点,类似弹窗类的焦点与表格焦点的冲突。



======================7.6.4发布 ===

2019-5-28 16:56:56 版本   付费用户先体验

AyTableView

  新增 Ctrl+C复制单行,复制多行到Excel的 DEMO

事件名:OnCopyingRowClipboardContent

  粘贴Ctrl+V事件 Ctrl+C 粘贴多行到AyTableView的 DEMO

事件名:OnPastingRowClipboardContent

  控制是否启用粘贴 IsEnabledPaste属性,默认false,

  新增多选时候,支持Ctrl+A 全选

45.gif


2019-5-8 09:52:27 尚未发布

修复AyLayer,当AyLayerOptions的ShowAnimateIndex为0,无弹窗动画效果时候,阴影设置无效的问题




2019-5-7 17:05:02 客户已经开始体验 

AyFormInput增加 FormatNumber属性,针对IsNumberBox=true时候使用的

写法:string.Format("{0:" + FormatNumber + "}");

案例:比如数字保留2位小数,使用F2即可。

特殊:绑定的Text的类型不能是double,要是string类型的。

image.png

2、格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元)


 代码如下:

string.Format("{0:C}",0.2)

结果为:¥0.20 (英文操作系统结果:$0.20)

默认格式化小数点后面保留两位小数,如果需要保留一位或者更多,可以指定位数


 代码如下:

string.Format("{0:C1}",23.15)

结果为:¥23.2 (截取会自动四舍五入)

格式化多个Object实例


 代码如下:

string.Format("市场价:{0:C},优惠价{1:C}",23.15,19.82)


 

3、格式化十进制的数字(格式化成固定的位数,位数不能少于未格式化前,只支持整形)


 代码如下:

string.Format("{0:D3}",23) //结果为:023

string.Format("{0:D2}",1223) //结果为:1223,(精度说明符指示结果字符串中所需的最少数字个数。)


 

4、用分号隔开的数字,并指定小数点后的位数


 代码如下:

string.Format("{0:N}", 14200) //结果为:14,200.00 (默认为小数点后面两位)

string.Format("{0:N3}", 14200.2458) //结果为:14,200.246 (自动四舍五入)

 

5、格式化百分比

string.Format("{0:P}", 0.24583) //结果为:24.58% (默认保留百分的两位小数)

string.Format("{0:P1}", 0.24583) //结果为:24.6% (自动四舍五入)


 

6、零占位符和数字占位符


 代码如下:

string.Format("{0:0000.00}", 12394.039) //结果为:12394.04

string.Format("{0:0000.00}", 194.039) //结果为:0194.04

string.Format("{0:###.##}", 12394.039) //结果为:12394.04

string.Format("{0:####.#}", 194.039) //结果为:194





2019-4-25

修复 zhongduan样式,窗体弹层的问题。



======================AYUI7.6.3.5===

2019-3-19 

修复AySplitView默认右侧的问题

修复ayiconall 字体图标时候 fontsize不同步变化的问题,已经换成绑定。



2018年11月8日21:34:41

AyTableView新增 OnUnCheckAll和OnCheckAll事件,配合 OnMultipleSelectionAdd和OnMultipleSelectionRemove 实现多选时候触发


2018-8-25 

AyPanel新增TitleContentBorderThickness

AyTableView新增 ScollViewer类型ContentScollViewer,方便用户拿到,然后可以控制定位到某一行

AySplitButton 新增 DropButtonClickMode属性 控制右侧 下拉按钮的触发方式,有Pressed,Hover,Release




7.6.2.8 已发布

修复7月11日之前的debug

修复AyMessageBox的Promt的密码模式的bug

修改MvcFramework的AyPropertyChanged的通知属性为 从protected变成public 方便在controller中 触发改变通知

修复弹层默认layerId导致的null的bug




优化aytableview,新增 性能方式的 动态增加列

修复6月11日之前的bug


2018-5-29 16:12:22    7.6.1.8

20180529160703.gif

image.png

AYUI支持 彩色多段Path了。





2018-5-24 1    7.6.1.6

AyRadioBoxList

AyCheckBoxList 全换成SelectedValue 驱动 选择项的选中,这样方便set,和get,二者都新增Click事件,

AyCheckBoxList 新增char类型的SplitChar属性,用于分割 选项值




======================AYUI7.6.1.32018-5-21 发布===

2018-5-19 22:05:51

 分页控件修改,使用时候先设置total,然后在绑定itemssource,保证不会再有总数为0的问题了。

 aymessagebox使用不再需要命名空间 


2018-5-18 17:03:19

AyTableView新增 OnSelectionChanged,OnMultipleSelectionAdd,OnMultipleSelectionRemove事件,可以做联动表格demo了。

分页控件部分重构,修复显示问题

AyMessageBox修复 置顶问题


2018-5-14 10:28:39

新增 AyBackgroundLayer支持#CCCCCC 这种纯色路径

================================= AYUI7.6 分割线=================

2018-5-11 17:45:20  

修复异常弹窗问题


2018-5-8 16:00:05

完成AyTableView 百分比宽度,小于等于1  是百分比宽度, 大于1是具体宽度值,百分是基于  当前AyTableView宽度,减去 具体宽度的综合,剩余宽度乘以你定义的百分比的值得到的宽度。

优化AyTableView单行列头的性能。

修复AyTableView的HasCheckBoxColumn等于true时候,点击checkbox,selecteditem没有值的bug

拓展AyTableView支持ScrollViewStyle 自定义滚动条外观,支持ScrollViewer.HorizontalScrollBarVisibility和VerticalScrollBarVisibility

6.gif

2018-4-23 16:53:32

修复AyMessageBox.Show("")时候,在owner未显示的时候,会报null的问题


2018-3-27 14:45:16

修复 FluidWrapPanel的 itemssource动态增加和 减少时候,界面的反馈。

修复AyTableView 选中单条和多条 ,清空数据,遗留的选中对象的问题

新增AyTableView 异步加载进度层 模板,和是否busy的状态



2018-3-20 11:40:17

AyWindow新增ayLayerAboveArea的grid,用于调节在弹层之上的内容

和AllCP用于window的内容的调整,比如 透明,比如 margin等

修复其他部分控件bug


2018-2-27 20:45:56

AyLayerOptions新增 WhenShowDialogNeedShake的bool ,当aylayer,showdialog时候,点其他区域是否 抖动内容。

修AyLayer的closed问题,新增直接关闭,非动画关闭AyLayer的拓展方法CloseParentLiAyLayer()






====================2018-1-29 7.5发布,新增大型AyTableView控件

其他bug


2017-12-21 10:48:59

重构AyTableView,适应各种需求,全虚拟化实现需求。

AyColorPicker 新增  屏幕取色

为适应AyTableView,通知实体增加一些新属性,增加对象Clone方法,深拷贝对象。


优化主题切换速度,现在客户端的样式资源不会二次加载,只会第一次加载。

AyPropertyChanged新增AYID


修复IfElseConverter  转换 单例

新增IfElseResourceConverter 转换器  多例   二者新增语法 ,在参数Formatter指定

    /// 0|1:男,2:女,3:不男不女#未知

    /// 0:男,1:女,2:不男不女#未知

    /// 0:男:女

===================

修复aytextbox的MaskFontFamily属性问题


=======================beta 截止线





2017-11-24 09:27:55

=============AYUI 7.2.5.5 修复 START====

新增 AySetProperty 用户 事件触发器的 action,直接修改父级依赖属性

AyTreeView新增IsNeedMoveAndOpacity控制,动画中是否包含移动和渐变

OtherBorderTreeViewHeight因为有的treeviewitem具有border,所以计算动画,需要考虑这个属性,一般是2,如果没有border,请设置0

DepthIndent每个级别的item 动画移动的  增度,默认12

ExpandedTime 动画执行时长

修复MVC中  AppLoadStart在某种情况下报错


修复AyFormInput 数字模式和整数模式下的 粘贴文本的问题,现在数字 模式,粘贴时候只保留 数字和点号,整数模式只保留数字。

===============AYUI 7.2.5.5 修复 End=============================


AYUI7

2017-11-8 16:58:41

修复客户端  的styles/资源字典  中,无法使用static 的baseon继承样式的问题,现在可以使用了。



2017-10-30 09:31:11

修改 contents/config/pathicon.xml为 资源类型,项目模板更改,可视化支持在新建完项目后,不需要手动加路径了。



2017-10-20   已发布  (版本7.2.3)

修改AyLayer的移动方式,现在只能标题栏目拖动了,

AyLayerOptions移除ContentMargin,ContentVerticalAlignment,ContentHorizontalAlignment

添加了Border类型的TitleBar和 AyLayerDockDirect枚举类型的Direction

控制弹窗位置

    public enum AyLayerDockDirect

    {

        LT,

        CT,

        RT,

        LC,

        CC,

        RC,

        LB,

        CB,

        RB

    }

修改错误信息弹层,和框架中的  用户反馈页面的弹层部分东西。

重构AyToolTip从usercontrol变成了普通控件,你可以重写AyToolTip的模板,从而达到 自定义提示框的外观了。如果你默认改了aytooltip的外观,那么文本框中的错误提示也会换成你的。

因为重构,所以修复了AyLayer  ,AY表单控件提示框(AyFormInput的子控件,AyComboBox,AyCheckBoxList,AyRadioBoxList) 移动导致 提示停留的问题。




=========================7.2.1============

2017-10-19 16:29:43

Ay.MvcFramework.Animation 动画库 升级1.5,可以支持,用户控件获得不到window时候的,动画名称的注册和取消注册等问题。

AyLayer 重构,变成了UserControl方式去做的,用法保持不变,以前的代码不用改。此时的AyLayer性能更省,支持关闭动画,现在的思路是,aywindow在模板中提供了AyLayerArea的grid,用户使用时候,show时候,如果没有设置owner,默认是找mainwindow,然后设置 弹层的owner,第一个参数owner现在是object,你可以传入Grid类型的容器,也可以传入AyWindow类型。传入AyWindow就是指定窗体的层,传入grid,就是grid的位置就是弹层区域。由于AyLayer现在不是window,所以他遮不住他的owner所在的窗体的winform控件,AyMessageBox还是window类型的,所以消息框不会有什么影响。

修复设计视图mvc的bug,




2017-10-18 16:59:11

修复 Mvc中 UserControl在AyLayer中 controller 类型无法识别的bug

修复AyWindow 子窗口的子窗口 关闭时候,父窗体置于其他程序窗口后面的问题,现在是新策略,性能更好了。

调整AyLayer和AyMessageBox的 开场 缩放动画时长由 750 缩短到450

修改 所有按钮的手势 换成了箭头,显的界面平。

Ay.MvcFramework.Animation 动画库新增  AyAniZoomBounceOut 出场动画类型,用于AyLayer和AyMessageBox的关闭。




2017-10-18 10:43:05

AYUI提供了  默认全显示器的  AyWindow 外观,  样式 资源名叫 ZhongDuan,

使用,在AyWindow上 指定, Style="{StaticResource ZhongDuan}",平时开发可以去掉此行代码,发布终端可以使用。

AyIconAll 不再继承UserControl,现在继承 ContentControl,性能更好点。




2017-10-17 18:21:30

AyWindow不再支持圆角窗体,DEMO移除ArcWindow窗体。

AyWindow不再支持 运行时的 是否遮盖任务栏。



2017-10-17 15:05:29

重构了 AyWindow测试:

AyWindow移除 阴影属性,TitleClickBarMode,请自己手动设置。新增RightButtonHeight替代原来的TitleBarHeight,现在TitlebarHeight主要控制内容距离窗体顶部的距离还有顶部 操作区域(移动双击拖到屏幕顶部)   ,当然你也可以在内容上设置margin最好了。


1  常规window  (下面加内容,顶部有32的高度)

<control:AyWindow x:Class="MVC7Application.Views._ViewStart"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:control="http://www.ayjs.net/controls"    TitleBarHeight="32"
      xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" BorderThickness="0" 
      xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" Foreground="Yellow"
      xmlns:controller="clr-namespace:MVC7Application.Controllers" 
                  MinWidth="1200" MinHeight="600" Width="1400" Height="800"   Title="goodsdfsdf"
      xmlns:local="clr-namespace:MVC7Application.Views" WindowStartupLocation="CenterScreen"
      mc:Ignorable="d"
      >

    <control:AyWindow.DataContext>
        <controller:ViewStartController />
    </control:AyWindow.DataContext>
    <!--<Grid  x:Name="layout"  GridService.Columns="10 * 10">
        --><!--<Border AlignmentService.Alignment="s s" Background="BurlyWood"></Border>
        <Border AlignmentService.Alignment="s s" Background="ForestGreen" Grid.Column="1"></Border>
        <Border AlignmentService.Alignment="s s" Background="Orange" Grid.Column="2"></Border>
        
        <TextBlock FontSize="22" AlignmentService.Alignment="c c" Text="测试abcd"></TextBlock>--><!--
    </Grid>-->
    <!--<Grid Margin="-1,-33,-1,-1"  x:Name="layout" Background="Green">
    --><!--<Grid Margin="0,-32,0,0"  x:Name="layout" Background="Green">-->
        <!--<Frame Margin="0,0,0,0" Source="/MVC7Application;component/Views/Home/HomeView.xaml" NavigationUIVisibility="Hidden"></Frame>--><!--
    </Grid>-->
</control:AyWindow>

效果:

顶部双击最大化和移动,默认的 右侧内容,  皮肤 最小化 还原/最大化 关闭

blob.png


2. 如果顶部的区域不想有响应  (想DIY窗体,但是想用我的右侧按钮组)

首先设置TitleBarHeight="0"  这样就不会有 顶部的 操作区域了。然后 现在按钮 高度是32了。由于没有TitleBarHeight了,所以窗体内容直接贴着窗体了,自动满屏,如果理想有距离,可以设置内容的margin,距离上方高度就行了。


3. 如果不想右侧按钮组,可以设置WindowRightButtonGroupVisibility="Collapsed"  这样你可以完全diy窗体了。

其他属性设置: ResizeMode决定窗体是否可以拖拉边缘调整大小。   IsCoverTaskBar=true,那么最大化就会覆盖任务栏,一般用于终端机器。

新重做的aywindow,请不要设置Allowtransparent=true  和windowstyle的值。保持默认即可,如果不想要阴影什么的。

顶部引入空间  xmlns:shell="clr-namespace:Microsoft.Windows.Shell;assembly=Ay.MvcFramework.Wpf"

blob.png

    <shell:WindowChrome.WindowChrome>

        <shell:WindowChrome ResizeBorderThickness="6"

                                    CaptionHeight="0"

                                    CornerRadius="0"

                                    GlassFrameThickness="0"

                                    UseAeroCaptionButtons="false" />

    </shell:WindowChrome.WindowChrome>

第一个值是6,请不要改, 第二个captionheight窗体顶部的操作区域高度  glassframethickness就是阴影。


新版AyWindow去掉了TitleBarClickMode,但是提供了SetElementMove

 control:AyWindow.SetElementMove="MoveAndDoubleClickMax"

blob.png

你可以在xaml中 设置  需要作为操作 窗体区域的 元素了。


WindowEntranceBackgroundMode属性已经改了。注意备注。

   /// 窗体入场模式
        ///  0 默认 啥都有
        ///  1  没有背景,没有右侧按钮组
        ///  2  没有背景
        ///  3 没有右侧自带的按钮
        ///  </summary>
        public int WindowEntranceBackgroundMode
        {
            get { return (int)GetValue(WindowEntranceBackgroundModeProperty); }
            set { SetValue(WindowEntranceBackgroundModeProperty, value); }

                           }


此次更改 相信基本需求都能满足了。



===============================2017-10-11======AYUI7.2 开发=========

MVC库 优化 路由 过滤器策略,实现跨程序集的 Controller层


Pure库 => AyCommon新增拓展方法

string ToPackUri(string filePath)

string ToPackUri(string filePath,string assemblyName)

System.Windows.ResourceDictionary ToResourceDictionary(Uri uri)

System.Windows.ResourceDictionary ToResourceDictionary(string uri)

System.Windows.ResourceDictionary ToResourceDictionary(string assemblyName, string filePath)

System.Windows.ResourceDictionary ToApplicationCurrentResourceDictionary(string filePath)

Uri ToUri(string Uri)


Wpf库   AyExtension下移除,原因 , AYUI要做到 不止一个客户端同时公用类库

blob.png

移除ResourceDictionary CreateResourceDictionary(Uri uri) 请使用  AyCommon新增的拓展方法进行转换。

移除ResourceDictionary CreateResourceDictionary(string uri)   请使用  AyCommon新增的拓展方法进行转换。



由于移除以上,客户端代码请修改,且手动填写完整PackUri

blob.png

请改成

blob.png






===============================2017-10-10===AYUI7.1.2============

DEMO和AYUI7项目测试,插件开发整合,模板修复


vs2013以上的VS安装:

关闭所有VS后,双击AYUI7.vsix

安装后,新建AYUI7项目。

插件提供功能如下:

    1.快速提示,在 xaml上 输入aymvc然后tab+tab,快速创建mvc的xaml级别的路由代码,也可以在xaml元素上使用Mvc.Event,Parameter,Action

                       在Controller级别里面,输入ayaction  然后tab+tab  快速创建  action代码段

      输入ayconst 然后tab+tab 创建常量

      在Model中输入  ayprop  然后tab+tab 快速创建 具有通知的属性

                       输入propr创建只读的依赖属性

      输入aym 快速创建方法

     2.MVC 三层右键菜单互相跳转,在xaml代码中右键,可以前往对应的   Controller和Model层,按下F7快速到xaml.cs文件

                               在Controller中右键,可以前往对应的View和Model层,还有xaml.cs层

                               在Model中右键,可以前往对应的View和Controller层,还有xaml.cs层

                               在xaml.cs中右键,可以前往Model和View和Controller层

                               WPF项目中右键,可以复制packuri路径,快速前往 消息key的文件 和 Session的Key文件

 

     3. 提供项目模板,  创建AYUI7标准项目,可以创建MVC 3层的AyWindow,AyPage,Page,UserControl文件,可以创建 Ay验证器3种



AYUI7类库说明,对应的类库源码下有 txt说明文件。

1. Ay.MvcFramework (可用于任意wpf项目,使用ay的mvc模式)

       - 引用Pure       (Reference Pure.dll)

      MVC库 => 用于定义客户端规范,例如:xaml拓展,过滤器等


2. Ay.MvcFramework.Animation (可用于任意wpf项目)

   - 无引用  (No References)

    AY动画库 => 用于处理和拓展动画


3. Ay.MvcFramework.AyFunc (可用于任意wpf项目)

   - 引用Pure (Reference Pure.dll)

    桌面开发功能库 => 中型纯方法库,用于桌面开发


4. Ay.MvcFramework.Config   (可用于AYUI项目)

    - 引用Pure   (Reference Pure.dll)

    用于管理AYUI项目的一些 目录配置等信息,这里包含了皮肤窗口Model和用于登陆窗口Model和序列化的信息


5. Ay.MvcFramework.CsShared    (可用于任意wpf项目,程序集)

   - 无引用   (No References)

    MvvmLight的消息和AYUI.Session共享


6. Ay.MvcFramework.Pure(可用于任意C#项目)

- 无引用 (No References)

    类型转换库 => 纯方法库,用于任意类型项目


7. Ay.MvcFramework.Wpf (可用于AYUI项目)

- 引用Mvc,Animation,AyFunc,Config,CsShared,Pure   (Reference Mvc,Animation,AyFunc,Config,CsShared,Pure)

  主题库=> 主题切换+ 控件 + 外观+AY表达式+wpf助手类


关于AYUI6升级AYUI7帮助   附件下载






===============================2017-09-30===============

AyDateBoxCalendar 焦点问题解决




===============================2017-09-29===============

修复AyWrapPanelFill在AyWindow的bug,最大化和还原后,自适应高度的问题。

修复 统计,提交,高亮控件的 Fixed问题,已经修复

AyFormInput 数字模式  外观改变,竖着的按钮换成 左右两边  AyTextBox新增leftContent属性。




===============================2017-09-26===============

移除很多的颜色,规范颜色。 修复AySlider的垂直模式模板问题




===============================2017-09-26===============

移除很多重复的颜色,统一以前部分的控件的 颜色,修改了MenuItem的高度和尺寸。



===============================2017-09-22===============

多国语言解决方案

AYUI默认 LanuageManager.DisabledLanuage = true; 表示在 皮肤通用设置 下  是不显示语言 下拉项的。

在application.xml下新增themeLanuage 节点,用于皮肤设置窗口 持久化保存的 节点。默认zh-cn

blob.png

现在你可以在Contents/language下 新增自己的语言包了,这里的语言包是个  资源字典,取名key,然后是值。

blob.png

添加1个语言包后,你可以  设置false,启用语言切换功能

blob.png

然后你可以重写RegisterLanuages方法,添加你自己的语言包

blob.png

如果你的目录不是标准目录,即 Contents/Lanuages的,你可以通过AyuiConfig.AYUI_LanuagePath然后修改 默认的文件夹目录

blob.png

此时此刻,你已经可以很轻松的完成多国语言的 软件了。



===============================2017-09-22===============

新增IExceptionFilter 异常过滤器,新增一个自己的异常处理 模块,在Global中注册即可

blob.png

blob.png

AYUI目前内置 4种异常处理方式,Custom 是给有源码用户使用的。

Log是 输出日志模式,你可以设置输出文件的目录,如果有异常,自动会生成在那。

Simply是弹窗的方式,用于把程序打包好,给测试人员使用的

Filter方式,AYUI会在程序捕捉到异常,对异常进行 处理,然后传递给 你的过滤器,让你自己处理。

blob.png



===============================2017-09-22===============

视图过滤器,请继承ViewAttribute ,实现自己的过滤器,此过滤器,用来放在Controller的上方,从而达到页面初始化时候,共享数据。

授权过滤器AuthorizeAttribute和普通过滤器ActionFilterAttribute 升级,通过filterContext.Route.Controller.ViewBag可以拿到ViewBag,从而达到,执行前后或者被授权标记的方法,可以共享一部分操作,共享数据。

blob.png

blob.png

如上,被UserInfo修饰的HomeController,则界面就可以使用

blob.png

如果这里你共享获得一个列表,放在了3个controller,放心吧,每个controller上的ViewBag都是独立存在的,只是共享代码的返回值/操作。

场景,此时你又加了一个页面,需要 处理获得一批数据,A界面有,B界面也有,你直接在A和B的controller上方,加上这个 你自己写的特性就行了,就可以在界面上使用了。无需重复代码。而如果你通过AuthorizeAttribute和ActionFilterAttribute 获得的ViewBag是在操作后才有的,并不是在初始化Controller时候会触发的。



===============================2017-09-21===============

可视化开发,包括可配置获得图标,可视化

QQ图片20170921110154.gif






===============================2017-09-19===============

移除AppleColor和AppleColor2,移除AppleColorConverter和Apple2ColorConverter转换器。

移除SolidColorBrushToColorConverter和ColorToBrushConverter转换器

移除CalcConverter转换器,取而代之的是单例的DoubleConverter

用法<ColumnDefinition Width="{TemplateBinding Height, Converter={control:DoubleConverter}, ConverterParameter=2*4}" />

2*4代表  2是处理的值, 第二个参数4,代表除法, 1234分别代表加减乘除,这里就是ColumnDefinition 的width= Height除以2

移除 AyExpressionMultiConverter转换器,建议使用AyExpressionConverter,获得 AY表达式处理后的  字符串。用法value是要被处理的字符串,parameter是AY表达式。

在AYUI中,资源key是“AyMaskExpression”

重写 AyArcRectangleRadioButton控件外观模板,以前的有dpi的bug。

修复AyFormInput,AyCheckBoxList,AyRadioBoxList,AyComboBox的 tooltip相关,提交验证,窗体移动,切换page,等相关行为的修复,现在tooltip会跟着窗体走,并且一起消失。

AyImageList新增EditBarVisible属性,控制 编辑按钮栏目的可见性。这样就可以完成纯浏览图片模式了。



===============================2017-09-18===============

新增AppStartLoad特性,用来修饰AuthorizeAttribute.      有了它,加了特性的action,绑定的元素就会在程序第一次运行,你可以得到他的统一的控制。

用 AppStartLoad特性标记AuthorizeAttribute的子类,表示 此特性的授权过滤器  第一次会执行



=====================================================


AYUI7 爱奇艺某页面 响应式DEMO,AY响应式框架在MVC中,使用起来xaml级别,支持 显示器水平/垂直/任意 显示: 大于宽度和大于高度 触发器,小于宽度和小于高度 触发器,每个触发器支持是终止的,还是继续,如果继续,则会继续执行判断下面的触发器。关于设置值,提供DataSetter,依赖属性的值设置,提供ResourceSetter,完成 资源值的响应式更改,同理完成列表 不定name的对象的属性修改。完成响应式。支持page,usercontrol,window,任意FrameworkElement的子类的控件响应式调节。

效果图如下: DEMO体验下载

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

20170915150546012459bb7f9c1482f.gif



=====================2017-9-7==========

重写AySplitView,让它支持 在 隐藏区域和显示区域 都支持 x:Name,后台可以拿到,去掉了PaneConent的属性,直接在内容中写就行了。

新增AySplitViewService.ToggleMenu    这样开关不用后台去写了,支持button和togglebutton

<Button x:Name="test1" Width="100" Height="20" AySplitViewService.ToggleMenu="{Binding ElementName=sv}">menu开关</Button>



=====================2017-9-6==========

AyRadioBoxList和AyCheckBoxList支持 ItemStyle,可以单独设置 CheckBox和RadioButton的外观了。


因为winform控件的存在,所以有的逻辑在xaml.cs,执行可能业务涉及到controller,可能需要调用controller的东西,所以也要考虑过滤器的执行,或者不考虑,两种情况

在xaml.cs可以使用 Mvc.Use和Mvc.UseFilter,方式调用Controller中的action,一个不走过滤器另一个走过滤器。在Controller中调用xaml.cs的方法,使用AYUI.Message.Send   ,在xaml.cs调用Controller使用Mvc.Use和Mvc.UseFilter


在aywindow和aypage后台 xaml.cs中,使用 Mvc.Use (直接调用Controller中的action,不走过滤器)

使用Mvc.UseFilter先 执行过滤器,再执行action,跟xaml中的route绑定逻辑一致,由于后台中无法获得owner和eventname,所以,你可以手动传递此参数,如果你需要的话。

可以传递路由模型信息。


最复杂的传递,可能你在Filter中需要信息,所以这里传递了。 其中6789是parameter参数,sender和e是事件的

        Mvc.UseFilter(x => x.GetEmployeeInfo,6789,sender,e,new Ay.MvcFramework.AyMarkupExtension.CommandBehaviorBinding { Owner=btnUseFilter,EventName="Click"});

最简单的传递,无需参数,我提供了几种方法重载,同理Use也有,自己尝试吧。

     Mvc.UseFilter(x => x.GetEmployeeInfo);

blob.png

在AyWindow和AyPage无需在后台的构造函数写上     

  AyThread.Instance.InitDispatcher(Dispatcher);

现在在AYUI7中,也可以直接用了。




======================

多国语言问题,解决,目前支持配置方式的 字典切换,目前写了 英文和 简体中文的两种

AYUI 应国外的要求,优先支持 英语,简体中文,繁体中文,日文

3.gif


=========================

为了解决  耦合性而拆分,为了企业增加适配和控件

AYUI从 7版本开始 ,细节版本号规则   年月日时

版本大名称 以  汽车的 相关单词命名, AYUI7   大名称叫  Axela

blob.png

timg.jpgtimg.jpg

文件类库说明:

1. Ay.MvcFramework (可用于任意wpf项目,使用ay的mvc模式)

       - 引用Pure

      MVC库 => 用于定义客户端规范,例如:xaml拓展,过滤器等


2. Ay.MvcFramework.Animation (可用于任意wpf项目)

   - 无引用

    AY动画库 => 用于处理和拓展动画


3. Ay.MvcFramework.AyFunc (可用于任意wpf项目)

   - 引用Pure

    桌面开发功能库 => 中型纯方法库,用于桌面开发


4. Ay.MvcFramework.Config   (可用于AYUI项目)

    - 引用Pure

    用于管理AYUI项目的一些 目录配置等信息,这里包含了皮肤窗口Model和用于登陆窗口Model和序列化的信息


5. Ay.MvcFramework.CsShared    (可用于任意wpf项目,程序集)

   - 无引用

    MvvmLight的消息和AYUI.Session共享


6. Ay.MvcFramework.Office (可用于任意C#项目)

- 无引用

    AY写的跟word和pdf的一些操作,目前测试的,属于额外的小拓展。


7. Ay.MvcFramework.Pure(可用于任意C#项目)

- 无引用

    类型转换库 => 纯方法库,用于任意类型项目


8. Ay.MvcFramework.Axela (可用于AYUI项目)

- 引用Mvc,Animation,AyFunc,Config,CsShared,Pure

  主题库=> 主题切换+ 控件 + 外观+AY表达式+wpf助手类



AYUI8  - Tesla,  待控件充足后,为了解决插件式,ayui做平台。

timg3.jpg







2017-9-1 17:40:04

为了规范消息ID和 Session的ID,新增App_Start文件夹,该文件夹下

blob.png

有两个类文件,用于存放常量 string 的key,两个类一样的。

场景:由于Key是字符串,在项目中有不确定在哪的情况,  所以以后AYUI.Message.Register的key,也是你们说的token,存在MESSAGES.cs文件中,用于共享Action操作,

当然,同理Session的key也存在SESSIONS.cs文件中,方便强类型 读取。

在AYUI项目中,任意cs文件,可以右键呼出,快速定位文件

blob.png

blob.png

AYMVC 插件新增  ayconst提示

4.gif

消息快速使用,为了解决跨程序集共享 Action<T>操作

所以在xaml.cs中注册消息,然后在Controller中可以 Send,触发消息,从而达到 Controller中可以操作xaml.cs的操作,因为在WPF中,winform不支持绑定,所以在controller中操作完数据后,可能需要触发xaml.cs后面定义好的方法。

Session的使用是键值对,刚网页的Session一样,说白了,就是个缓存。

我已经把他们封装在

Ay.MvcFramework.CsShared.dll


消息示例,引用Ay.MvcFramework.CsShared.dll

blob.png

注册完后,在Controller中,使用

blob.png

这里使用了MESSAGES来管理消息的Key,使得项目任意地方用,可以明确   作用。





2017-09-01 14:01:43

RouteSetter支持 IsSendEventArgs

blob.png

3.gif



AYUI7  MVC 提前预览

一个插件安装,享受所有快捷操作

377862-20170831131944562-793028266.gif

 

静态图:

支持xaml中aymvc快速绑定多个操作

支持controller中  ayaction快速创建action代码块,

 

在AYUI应用程序的 Controller层,

2.png


在AYUI应用程序的 Model 层,

3.png

在AYUI应用程序的View 层,

 4.png

在AYUI应用程序的View的后台 层,   3个都可以立即跳转

 51.png




AYUI已经实现   Filter,支持在Controller中,使用ViewBag定义通知属性。

 

对于ActionFilterAttribute的子类(筛选器)

1.如果  单个Controller上方加上 Filter,  内部的 action没有加filter,默认controller级别的,里面的每个action都默认继承controller的filter

2.如果controller没有,而action上方有,采用 action级别的filter

3.如果有多个ActionFilterAttribute 筛选器,可以通过Odrer调整执行顺序,数字越小优先执行,如果不标记Order,默认从上往下的filter执行

过滤器执行规则:     从 Controller级别执行前-> action级别执行前 -> 执行  -> action级别执行后 ->  Controller级别 执行后


测试-》Odrer调整执行顺序

        [ExecuteTimeMonitor(Task = "获得用户信息", Order = 2)]

        [AyLog(ModuleName = "获得用户信息", Order = 1)]


如果Controller也有同类筛选器,可以使用FilterScope调整执行策略

 [AyLog(ModuleName = "获得用户信息模块")]

    public class HomeController : Controller

    {

        public HomeController()

        {

            ViewBag.Title = "Ay.MVC框架";

        }


        //[Right("889b2c06-5f8b-4c7f-a2a8-9e61c1668ecd")]

        //[ExecuteTimeMonitor(Task = "获得用户信息")]

        //[AyLog(ModuleName = "获得用户信息", FilterScope = FilterScope.Both)]

        [ExecuteTimeMonitor(Task = "获得用户信息", Order = 2)]

        [AyLog(ModuleName = "获得用户信息", Order = 1)]

        public ActionResult GetEmployeeInfo { get; private set; } = inParam =>

        {

            //业务逻辑

            MessageBox.Show("GetEmployeeInfo:" + inParam.ToString());


        };


默认执行策略是 FilterScope =FilterScope.Action,只执行Action上方的

如果FilterScope =FilterScope.Controller 只执行controller级别的

如果FilterScope =FilterScope.Both,先执行controller级别,再执行action级别


可以同时在一个action上,标记多个ActionFilterAttribute的子类,但是同一种类型,只能标记1个



关于 AuthorizeAttribute 授权筛选器使用

重写      public override bool OnAuthorization(IExecutionStrategy filterContext)  方法,返回true,则执行action,返回false,则不执行,区域触发规则同ActionFilterAttribute一致

 


推荐您阅读更多有关于“AYUI7,”的文章

猜你喜欢

已有4位网友发表了看法:

1#不错哟  2019-01-22 15:47:40 回复该评论

如果能开源最好了。好好学习一下。

谢谢楼主分享

3#访客  2018-11-11 21:29:19 回复该评论

期待最新DEMO~加油!

4#十年  2018-02-01 08:42:02 回复该评论

默默的关注,默默的点赞,不说话,

工作是公司的,身体是自己的

保重身体!

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  查看权限

抖音:wpfui 工作wpf,兴趣学习flutter

目前在合肥市某公司上班,已经厌弃,如果你的公司看的上我,加我QQ私聊

AYUI8全源码 Github地址:前往获取

杨洋(AaronYang简称AY,安徽六安人)AY唯一QQ:875556003和AY交流

高中学历,2010年开始web开发,2015年1月17日开始学习WPF

声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费

不是从我处购买的ayui7源码,我不提供任何技术服务,如果你举报从哪里买的,我可以帮你转正为我的客户,并送demo

查看捐赠

AYUI7.X MVC教程 更新如下:

第一课 第二课 程序加密教程

标签列表