Giter VIP home page Giter VIP logo

aduskin's Introduction

AduSkin

追求极致,永臻完美

A Beautiful WPF Control UI

一款简单漂亮的WPF UI,融合多个开源框架组件,为个人定制的UI,可供学者参考和使用。

Nuget 搜索"AduSkin" 可直接导包使用

具体使用请参考 AduSkin.Demo

如有 WPF UI 外包 可联系我

技术交流

联系方式
QQ 1280429435
QQ群1 544471417
QQ群2 224087477
QQ群3 252480168

感谢开源框架

HandyControl、Arthas、WPF.UI

版权和协议

AduSkin 项目基于 LGPL-3.0 开源协议开放项目源代码。本项目版权由项目发起人、开发者AduSkin所有。

依照 LGPL-3.0 协议规定:

您可以在任何商业软件中引用 AduSkin 的生成库而无需支付任何与版权相关的费用; 如果您的项目使用并修改了 AduSkin 的源代码,那么您的项目也需要使用 LGPL 协议进行开源,并且在您的衍生项目中保留 AduSkin 的版权信息:Using by AduSkin。

贡献者

支持者

赞助支持

如果你觉得本框架还不错的话,可以赞助我防脱洗发水,Haha

image

组件展示

image

image

image

开发环境

开发环境:Windows 10 + Visual Studio 2019 Professional + .Net Framework 4.5 + .Net Core 3.1

使用方法

//引用命名空间
xmlns:AduSkin="clr-namespace:AduSkin.Controls.Metro;assembly=AduSkin" 
//使用窗口
<AduSkin:MetroWindow x:Class="MainWindow"/>
//使用控件
<AduSkin:AduFlatButton Content="按钮"/>

视频控件 需要依赖 VideoLan.LibVlc.Windows

// 使用 .net cli
dotnet add package VideoLan.LibVlc.Windows

// 使用 vs 的 package-manager
Install-Package VideoLAN.LibVLC.Windows 

开发案例如下

【AduMusic】

image

【AZai】

image

【AduShopping】

image

【AduChat】

image

【心理FM】

image

【SuperEvil】

image

【HttpTool】

image

aduskin's People

Contributors

aduskin avatar chenqi7127 avatar john0king avatar nabian avatar prime167 avatar ryangle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aduskin's Issues

使用AduDatePicker选择时间出现错误

使用AduDatePicker控件时,我绑定了SelectedDateTime这个属性,但是选择的是下午两点,前台也显示的是14:00:00,但是传到后台之后就变成了02:00:00,我应该是使用的最新版本

新建项目后,在页面添加 <Metro:MetroWindow.ContextMenu> 内容无法显示

<Metro:MetroWindow
x:Class=" Dr.Tools.ReportExcelHelper.Wpf.Views.UserView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Metro="clr-namespace:AduSkin.Controls.Metro;assembly=AduSkin"
xmlns:AduOpenLink="clr-namespace:AduSkin.Interactivity;assembly=AduSkin"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="AduSkin.Demo" MinWidth="600" MinHeight="350"
d:DesignHeight="1200" d:DesignWidth="1600"
BorderThickness="0" WindowStyle="None"
Background="#FFF" mc:Ignorable="d"
DataContext="{Binding Source={StaticResource Locator},Path=UserViewModel}">




<Metro:MetroWindow.ContextMenu>
    <Metro:MetroContextMenu>
        <Metro:MetroMenuItem Header="二级菜单" />
        <Metro:MetroMenuItem Header="二级菜单"/>
        <Metro:MetroMenuItem Header="二级菜单" />
        <Metro:MetroMenuSeparator />
        <Metro:MetroMenuItem Header="二级菜单" />
        <Metro:MetroMenuItem Header="二级菜单" />
        <Metro:MetroMenuItem Header="内部是三级菜单" >
            <Metro:MetroMenuItem Header="三级菜单" />
            <Metro:MetroMenuItem IsEnabled="False" />
            <Metro:MetroMenuItem Header="三级菜单"/>
            <Metro:MetroMenuSeparator />
            <Metro:MetroMenuItem Header="三级菜单" />
            <Metro:MetroMenuItem Header="内部是三级菜单">
                <Metro:MetroMenuItem Header="三级菜单"/>
                <Metro:MetroMenuItem Header="三级菜单" />
                <Metro:MetroMenuItem Header="三级菜单" />
                <Metro:MetroMenuSeparator />
                <Metro:MetroMenuItem Header="三级菜单"/>
                <Metro:MetroMenuItem Header="三级菜单"/>
            </Metro:MetroMenuItem>
        </Metro:MetroMenuItem>
        <Metro:MetroMenuSeparator />
        <Metro:MetroMenuItem x:Name="exit" Header="退出程序" />
    </Metro:MetroContextMenu>
</Metro:MetroWindow.ContextMenu>

</Metro:MetroWindow>

AduDatePicker属性建议优化或者添加注释

当我使用AduDatePicker时,不得不梳理清楚里面对应的属性。
以下面代码为例

<metro:AduDatePicker x:Name="StartDate"
                             HorizontalAlignment="Left" 
                             Margin="0 4 4 4" Width="150" 
                             VerticalAlignment="Center" 
                             Height="28"
                             Type="DateTime" 
                             CornerRadius="3" 
                             DateStringFormat="yyyy/MM/dd"/>

如果我需要展示时间 StartDate.DisplayDate = System.DateTime.Now;显示为空,使用SelectedDate显示正常。(看命名感觉应该是第一个属性有效)
当我选择时间时
image
StartDate里面的数据为:

  名称 类型
SelectedDate {2019/12/31 0:00:00} System.DateTime?
SelectedTime {2019/12/27 20:35:07} System.DateTime?
DisplayDate {2019/12/31 0:00:00} System.DateTime

没办法直接拉取选择的时间。只能通过上面几个数据的拼接。

public static DateTime? GetSelectDateTime(this AduDatePicker picker)
{
    DateTime? result;
    if (picker.SelectedDate != null && picker.SelectedTime != null)
    {
        result = new DateTime(picker.SelectedDate.Value.Year,
            picker.SelectedDate.Value.Month,
            picker.SelectedDate.Value.Day,
            picker.SelectedTime.Value.Hour,
            picker.SelectedTime.Value.Minute,
            picker.SelectedTime.Value.Second);
    }
    else
    {
        result = null;
    }
    return result;
}

另外当清空时间时,我以为获取到的数据应该是null,结果并不是。(当然这是个体验问题)

修正AduDataGrid中使用AduCheckBox时,选中行后,复选框显示不正常的BUG

using AduSkin.Controls.Helper;
using AduSkin.Utility.Element;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace AduSkin.Controls.Metro
{
public class AduDataGrid : DataGrid
{
///


/// 所有 AduCheckBox 对象名称。
///

private IEnumerable _chkns = null;

  public AduDataGrid()
  {
     Utility.Refresh(this);

     _chkns = FindVisualChildren<AduCheckBox>(this).
        Select(v => v.Name).Distinct();
  }

  static AduDataGrid()
  {
     ElementBase.DefaultStyle<AduDataGrid>(DefaultStyleKeyProperty);
  }

  protected override void OnSelectionChanged(SelectionChangedEventArgs e)
  {
     base.OnSelectionChanged(e);

     if (_chkns.Count() > 0)
     {
        var setters = this.RowStyle?.Setters;
        var bg = Color.FromRgb(255, 255, 255);
        var bb = Color.FromRgb(255, 255, 255);

        foreach (Setter setter in setters)
        {
           if (setter.Property.Name == "Background")
              bg = setter.Value.ToColor();
           else if (setter.Property.Name == "BorderBrush")
              bb = setter.Value.ToColor();
        }

        var scs = this.SelectedCells;

        for (int i = 0; i < scs.Count; i++)
        {
           if (scs[i].Column is DataGridTemplateColumn tc)
           {
              for (int j = 0; j < this.Items.Count; j++)
              {
                 var fe = tc.GetCellContent(this.Items[j]);

                 if (fe != null)
                 {
                    foreach (var item in _chkns)
                    {
                       if (tc.CellTemplate.FindName(item, fe) is AduCheckBox chk)
                       {
                          chk.Foreground = j == this.SelectedIndex ?
                             new SolidColorBrush(bg) : new SolidColorBrush(bb);
                       }
                    }
                 }
              }
           }
        }
     }
  }

  private static IEnumerable<T> FindVisualChildren<T>(DependencyObject dep) where T : DependencyObject
  {
     if (dep != null)
     {
        for (int i = 0; i < VisualTreeHelper.GetChildrenCount(dep); i++)
        {
           DependencyObject child = VisualTreeHelper.GetChild(dep, i);
           if (child != null && child is T)
           {
              yield return (T)child;
           }

           foreach (T childOfChild in FindVisualChildren<T>(child))
           {
              yield return childOfChild;
           }
        }
     }
  }

}
}
// ExtensionMethod
internal static Color ToColor(this object value)
{
try
{
return (Color)ColorConverter.ConvertFromString(value.ToString());
}
catch (System.Exception)
{
return Color.FromRgb(255, 255, 255);
}
}

Readme 中的协议和License描述不符

首先感谢您的辛苦付出,开源这么好的软件。

Readme中是LGPL,License是GPL。前者用中文说的很清楚,不修改源代码可以商用,看修改时间,先添加的license,后在readme中添加LGPL的描述,那实际的协议就是LGPL?请修改License文件内容,使二者统一,也更利用推广。谢谢!

日期选择添加清空功能

  • 为什么要有这个功能?
  • 因为有时候我们不需要带有时间这个条件,一旦选中时间后,则无法清空选择时间。QAQ。
  • 具体一点。。>W<
  • 以demo为例,Type默认的情况下,下方显示清空按钮就好了。截图为个人的魔改版本
    image
  • 另外报个bug,这个清空按钮对AduDatePicker.SelectedDate无效,貌似只是清空了PART_Calendar.SelectedDate。所以就算是目前的清空,拿到的日期还是不变的。

编译项目时无法还原NuGet包

代码中三个Project在还原NuGet包时均提示:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 NU1202 包 System.CodeDom 4.7.0 与 netcoreapp3.1 (.NETCoreApp,Version=v3.1) 不兼容。 包 System.CodeDom 4.7.0 不支持任何目标框架。 AduSkin C:\Users\xqyi\Desktop\AduSkin-master\src\AduSkin\AduSkin.csproj 1

各项目的编译目标框架为未指定状态,不知何故:
无标题

AduDatePicker.cs中设置选择时间有Bug

SelectedDate和SelectedTime属性Set的如下代码未考虑系统特殊时间格式问题:
this.SelectedDateTime = Convert.ToDateTime(this.SelectedDate.Value.ToLongDateString().ToString() + " " + SelectedTime.Value.ToLongTimeString().ToString());
如系统时间为21:43:08 2020/2/21 星期五,该代码出转载异常

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.