Merge branch 'master' into pr/22

This commit is contained in:
NaBian committed 2019-04-17 20:04:26 +08:00
commit 5679ed933f
1920 files changed
+97379 -1797

No files matched your search

+20 -9
View File
@@ -1,9 +1,20 @@
/.vs
/packages
/HandyControl/bin
/HandyControl/obj
/HandyControlDemo/bin
/HandyControlDemo/obj
/DockBoxResearch/bin
/DockBoxResearch/obj
/HandyControl.sln.DotSettings.user
DockBoxResearch/bin
DockBoxResearch/obj
src/.vs
src/Core_30/HandyControl_Core_30/bin
src/Core_30/HandyControl_Core_30/obj
src/Core_30/HandyControlDemo_Core_30/bin
src/Core_30/HandyControlDemo_Core_30/obj
src/Net_35/HandyControl_Net_35/bin
src/Net_35/HandyControl_Net_35/obj
src/Net_35/HandyControlDemo_Net_35/bin
src/Net_35/HandyControlDemo_Net_35/obj
src/Net_40/HandyControl_Net_40/bin
src/Net_40/HandyControl_Net_40/obj
src/Net_40/HandyControlDemo_Net_40/bin
src/Net_40/HandyControlDemo_Net_40/obj
src/Net_GE45/HandyControl_Net_GE45/bin
src/Net_GE45/HandyControl_Net_GE45/obj
src/Net_GE45/HandyControlDemo_Net_GE45/bin
src/Net_GE45/HandyControlDemo_Net_GE45/obj
*.user
+76
View File
@@ -0,0 +1,76 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at 836904362@qq.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq
-36
View File
@@ -1,36 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27703.2000
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControl", "HandyControl\HandyControl.csproj", "{DC966E3D-BCFF-4652-98CF-070E5494749A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControlDemo", "HandyControlDemo\HandyControlDemo.csproj", "{9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug-Net45|Any CPU = Debug-Net45|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{DC966E3D-BCFF-4652-98CF-070E5494749A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DC966E3D-BCFF-4652-98CF-070E5494749A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DC966E3D-BCFF-4652-98CF-070E5494749A}.Debug-Net45|Any CPU.ActiveCfg = Debug-Net45|Any CPU
{DC966E3D-BCFF-4652-98CF-070E5494749A}.Debug-Net45|Any CPU.Build.0 = Debug-Net45|Any CPU
{DC966E3D-BCFF-4652-98CF-070E5494749A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DC966E3D-BCFF-4652-98CF-070E5494749A}.Release|Any CPU.Build.0 = Release|Any CPU
{9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net45|Any CPU.ActiveCfg = Debug-Net45|Any CPU
{9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Debug-Net45|Any CPU.Build.0 = Debug-Net45|Any CPU
{9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {3B28FE22-B7B9-4058-9EF9-936C53C986CA}
EndGlobalSection
EndGlobal
@@ -1,35 +0,0 @@
using System.Windows;
using System.Windows.Media;
namespace HandyControl.Controls
{
public class TitleElement
{
public static readonly DependencyProperty BackgroundProperty = DependencyProperty.RegisterAttached(
"Background", typeof(Brush), typeof(TitleElement), new FrameworkPropertyMetadata(default(Brush), FrameworkPropertyMetadataOptions.Inherits));
public static void SetBackground(DependencyObject element, Brush value)
=> element.SetValue(BackgroundProperty, value);
public static Brush GetBackground(DependencyObject element)
=> (Brush) element.GetValue(BackgroundProperty);
public static readonly DependencyProperty ForegroundProperty = DependencyProperty.RegisterAttached(
"Foreground", typeof(Brush), typeof(TitleElement), new FrameworkPropertyMetadata(default(Brush), FrameworkPropertyMetadataOptions.Inherits));
public static void SetForeground(DependencyObject element, Brush value)
=> element.SetValue(ForegroundProperty, value);
public static Brush GetForeground(DependencyObject element)
=> (Brush) element.GetValue(ForegroundProperty);
public static readonly DependencyProperty BorderBrushProperty = DependencyProperty.RegisterAttached(
"BorderBrush", typeof(Brush), typeof(TitleElement), new FrameworkPropertyMetadata(default(Brush), FrameworkPropertyMetadataOptions.Inherits));
public static void SetBorderBrush(DependencyObject element, Brush value)
=> element.SetValue(BorderBrushProperty, value);
public static Brush GetBorderBrush(DependencyObject element)
=> (Brush) element.GetValue(BorderBrushProperty);
}
}
-9
View File
@@ -1,9 +0,0 @@
using System.Windows;
namespace HandyControl.Controls
{
public class StackText : FrameworkElement
{
}
}
@@ -1,35 +0,0 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:HandyControl.Controls">
<Style x:Key="GroupBoxBaseStyle" TargetType="GroupBox">
<Setter Property="BorderBrush" Value="{DynamicResource BorderBrush}"/>
<Setter Property="Background" Value="{DynamicResource SecondaryRegionBrush}"/>
<Setter Property="Foreground" Value="{DynamicResource TextIconBrush}"/>
<Setter Property="controls:TitleElement.Background" Value="{DynamicResource TitleBrush}"/>
<Setter Property="controls:BorderElement.CornerRadius" Value="4"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Padding" Value="4"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GroupBox">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="30"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border MinHeight="30" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{Binding Path=(controls:TitleElement.Background),RelativeSource={RelativeSource TemplatedParent}}" CornerRadius="{Binding Path=(controls:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" Margin="0,0,0,6">
<ContentPresenter TextElement.Foreground="{TemplateBinding Foreground}" Margin="10,0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" ContentSource="Header" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
<Border Grid.Row="1" CornerRadius="{Binding Path=(controls:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}">
<ContentPresenter Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
-52
View File
@@ -1,52 +0,0 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:HandyControl.Controls">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Base/GroupBoxBaseStyle.xaml"/>
</ResourceDictionary.MergedDictionaries>
<Style BasedOn="{StaticResource GroupBoxBaseStyle}" TargetType="GroupBox"/>
<Style x:Key="GroupBoxOriginal" BasedOn="{StaticResource GroupBoxBaseStyle}" TargetType="GroupBox">
<Setter Property="Foreground" Value="{DynamicResource PrimaryTextBrush}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GroupBox">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<ContentPresenter TextElement.Foreground="{TemplateBinding Foreground}" Margin="10,0,10,6" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" ContentSource="Header" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
<Border Grid.Row="1" CornerRadius="{Binding Path=(controls:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}">
<ContentPresenter Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="GroupBoxTab" BasedOn="{StaticResource GroupBoxBaseStyle}" TargetType="GroupBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GroupBox">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="30"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Grid.Row="1" CornerRadius="0,0,4,4" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}">
<ContentPresenter Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
<Border Grid.Row="0" MinHeight="30" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{Binding Path=(controls:TitleElement.Background),RelativeSource={RelativeSource TemplatedParent}}" CornerRadius="4,4,0,0">
<ContentPresenter TextElement.Foreground="{TemplateBinding Foreground}" Margin="10,0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" ContentSource="Header" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
-30
View File
@@ -1,30 +0,0 @@
using System.Linq;
using System.Windows;
using System.Windows.Media;
namespace HandyControl.Tools
{
internal class VisualHelper
{
public static VisualStateGroup TryGetVisualStateGroup(DependencyObject dependencyObject, string groupName)
{
var root = GetImplementationRoot(dependencyObject);
if (root == null)
{
return null;
}
return VisualStateManager
.GetVisualStateGroups(root)?
.OfType<VisualStateGroup>()
.FirstOrDefault(group => string.CompareOrdinal(groupName, group.Name) == 0);
}
public static FrameworkElement GetImplementationRoot(DependencyObject dependencyObject)
{
return 1 == VisualTreeHelper.GetChildrenCount(dependencyObject)
? VisualTreeHelper.GetChild(dependencyObject, 0) as FrameworkElement
: null;
}
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 422 KiB

@@ -1,9 +0,0 @@
<UserControl x:Class="HandyControlDemo.UserControl.AnimationPathDemoCtl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Background="{DynamicResource RegionBrush}"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:HandyControl.Controls;assembly=HandyControl">
<controls:TransitioningContentControl>
<controls:AnimationPath VerticalAlignment="Center" Margin="32" PathLength="400" Duration="0:0:4" Stretch="Uniform" Width="200" Height="200" StrokeThickness="2" Stroke="{DynamicResource PrimaryBrush}" Data="M40.493382,19.001303 C36.637875,19.06448 33.938568,21.421986 33.948524,25.271919 L34.068279,71.56765 34.066906,71.598007 34.068745,71.747833 34.18895,118.21758 C34.202225,123.35083 39.026951,129.19344 44.965271,131.2674 50.903587,133.34137 55.706783,130.86133 55.693504,125.72808 L55.589508,85.524513 93.866371,85.524513 93.950943,118.21758 C93.964218,123.35083 98.788948,129.19344 104.72726,131.2674 110.66558,133.34137 115.46878,130.86133 115.4555,125.72808 L115.33575,79.432381 115.33712,79.401993 115.33528,79.252007 115.21507,32.782413 C115.2018,27.64917 110.37708,21.806566 104.43876,19.732603 98.500435,17.658638 93.697243,20.138674 93.710518,25.271919 L93.814514,65.475487 55.537647,65.475487 55.453079,32.782413 C55.439804,27.64917 50.615082,21.806566 44.676762,19.732603 43.192181,19.214111 41.778549,18.980244 40.493382,19.001303 z M9.999999,0 L140,0 C145.52284,0 150,4.4771523 150,9.999999 L150,140 C150,145.52284 145.52284,150 140,150 L9.999999,150 C4.4771523,150 0,145.52284 0,140 L0,9.999999 C0,4.4771523 4.4771523,0 9.999999,0 z"/>
</controls:TransitioningContentControl>
</UserControl>
@@ -1,16 +0,0 @@
<UserControl x:Class="HandyControlDemo.UserControl.CircleProgressBarDemoCtl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:HandyControl.Controls;assembly=HandyControl"
Background="{DynamicResource RegionBrush}">
<controls:TransitioningContentControl>
<StackPanel Orientation="Horizontal" Margin="32">
<controls:CircleProgressBar Value="50"/>
<controls:CircleProgressBar Value="80" FontSize="30" Margin="16,0,0,0"/>
<controls:CircleProgressBar Value="10" Margin="16,0,0,0" ShowText="False" Width="20" Height="20" ArcThickness="2" Style="{StaticResource ProgressBarSuccessCircle}"/>
<controls:CircleProgressBar Value="20" Margin="16,0,0,0" ShowText="False" Width="30" Height="30" ArcThickness="6" Style="{StaticResource ProgressBarInfoCircle}"/>
<controls:CircleProgressBar Value="40" Margin="16,0,0,0" ShowText="False" Width="40" Height="40" ArcThickness="10" Style="{StaticResource ProgressBarWarningCircle}"/>
<controls:CircleProgressBar Value="80" Margin="16,0,0,0" Width="50" Height="50" Style="{StaticResource ProgressBarDangerCircle}"/>
</StackPanel>
</controls:TransitioningContentControl>
</UserControl>
@@ -1,19 +0,0 @@
<UserControl x:Class="HandyControlDemo.UserControl.GrowlDemoCtl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="clr-namespace:HandyControl.Controls;assembly=HandyControl"
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
DataContext="{Binding GrowlDemo,Source={StaticResource Locator}}"
Background="{DynamicResource RegionBrush}">
<controls:TransitioningContentControl>
<WrapPanel Margin="32" VerticalAlignment="Center">
<Button Command="{Binding InfoCmd}" Content="{x:Static langs:Lang.Info}" Margin="0,5,5,5" Style="{StaticResource ButtonInfo}"/>
<Button Command="{Binding SuccessCmd}" Content="{x:Static langs:Lang.Success}" Margin="5" Style="{StaticResource ButtonSuccess}"/>
<Button Command="{Binding WarningCmd}" Content="{x:Static langs:Lang.Warning}" Margin="5" Style="{StaticResource ButtonWarning}"/>
<Button Command="{Binding ErrorCmd}" Content="{x:Static langs:Lang.Error}" Margin="5" Style="{StaticResource ButtonDanger}"/>
<Button Command="{Binding AskCmd}" Content="{x:Static langs:Lang.Ask}" Margin="5" Background="BlueViolet" Foreground="White"/>
<Button Command="{Binding FatalCmd}" Content="{x:Static langs:Lang.Fatal}" Margin="5,0"/>
<Button Command="{Binding ClearCmd}" Content="{x:Static langs:Lang.Clear}" Margin="5,0,0,0" Style="{StaticResource ButtonPrimary}"/>
</WrapPanel>
</controls:TransitioningContentControl>
</UserControl>
@@ -1,295 +0,0 @@
<Border controls:ScrollViewer.IsEnableInertia="True"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:command="http://www.galasoft.ch/mvvmlight"
x:Class="HandyControlDemo.UserControl.LeftMainContent"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:data="clr-namespace:HandyControlDemo.Data"
xmlns:controls="clr-namespace:HandyControl.Controls;assembly=HandyControl"
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<TabControl SelectionChanged="TabControl_OnSelectionChanged" Style="{StaticResource TabControlInLine}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<command:EventToCommand Command="{Binding SwitchDemoCmd}" PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
<TabItem Header="{x:Static langs:Lang.Styles}">
<ListBox BorderThickness="0" SelectionMode="Single">
<ListBoxItem Tag="{x:Static data:MessageToken.BrushDemoCtl}" Content="{x:Static langs:Lang.Brush}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/Brush_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.ButtonDemoCtl}" Content="{x:Static langs:Lang.Button}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/ButtonClick_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.ToggleButtonDemoCtl}" Content="{x:Static langs:Lang.ToggleButton}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/Toggle_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.RadioButtonDemoCtl}" Content="{x:Static langs:Lang.RadioButton}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/RadioButton_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.CheckBoxDemoCtl}" Content="{x:Static langs:Lang.CheckBox}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/CheckBox_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.NaiveScrollViewerDemoCtl}" Content="{x:Static langs:Lang.ScrollViewer}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/ScrollBox_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.SliderDemoCtl}" Content="{x:Static langs:Lang.Slider}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/Slider_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.TextBlockDemoCtl}" Content="{x:Static langs:Lang.TextBlock}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/TextBlock_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.NaiveTextBoxDemoCtl}" Content="{x:Static langs:Lang.TextBox}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/TextBox_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.NaiveComboBoxDemoCtl}" Content="{x:Static langs:Lang.ComboBox}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/ComboBox_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.NaivePasswordBoxDemoCtl}" Content="{x:Static langs:Lang.PasswordBox}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/PasswordBox_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.ExpanderDemoCtl}" Content="{x:Static langs:Lang.Expander}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/Expander_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.ProgressBarDemoCtl}" Content="{x:Static langs:Lang.ProgressBar}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/ProgressBar_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.CalendarDemoCtl}" Content="{x:Static langs:Lang.Calendar}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/Calendar_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.NaiveDatePickerDemoCtl}" Content="{x:Static langs:Lang.DatePicker}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/DatePicker_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.NaiveTabControlDemoCtl}" Content="{x:Static langs:Lang.TabControl}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/TabPage_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.DataGridDemoCtl}" Content="{x:Static langs:Lang.DataGrid}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/DataGrid_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.TreeViewDemoCtl}" Content="{x:Static langs:Lang.TreeView}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/TreeView_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.ListBoxDemoCtl}" Content="{x:Static langs:Lang.ListBox}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/ListBox_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.ListViewDemoCtl}" Content="{x:Static langs:Lang.ListView}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/ListView_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.GroupBoxDemoCtl}" Content="{x:Static langs:Lang.GroupBox}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/GroupBox_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.MenuDemoCtl}" Content="{x:Static langs:Lang.Menu}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/ContextMenu_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.RichTextBoxDemoCtl}" Content="{x:Static langs:Lang.RichTextBox}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/RichTextBox_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.ToolBarDemoCtl}" Content="{x:Static langs:Lang.ToolBar}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/ToolBar_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.BorderDemoCtl}" Content="{x:Static langs:Lang.Border1}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/BorderElement_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
</ListBox>
</TabItem>
<TabItem Header="{x:Static langs:Lang.Controls}">
<ListBox BorderThickness="0" SelectionMode="Single">
<ListBoxItem Tag="{x:Static data:MessageToken.NumericUpDownDemoCtl}" Content="{x:Static langs:Lang.NumericUpDown}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/NumericListBox_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.TextBoxDemoCtl}" Content="{x:Static langs:Lang.TextBox}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/TextBox_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.ComboBoxDemoCtl}" Content="{x:Static langs:Lang.ComboBox}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/ComboBox_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.PasswordBoxDemoCtl}" Content="{x:Static langs:Lang.PasswordBox}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/PasswordBox_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.DatePickerDemoCtl}" Content="{x:Static langs:Lang.DatePicker}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/DatePicker_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.ClockDemoCtl}" Content="{x:Static langs:Lang.Clock}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/Time_color_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.TimePickerDemoCtl}" Content="{x:Static langs:Lang.TimePicker}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/TimePicker_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.CalendarWithClockDemoCtl}" Content="{x:Static langs:Lang.CalendarWithClock}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/Calendar_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.DateTimePickerDemoCtl}" Content="{x:Static langs:Lang.DateTimePicker}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/DatePicker_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Style="{StaticResource ListBoxItemNew}" Tag="{x:Static data:MessageToken.SearchBarDemoCtl}" Content="{x:Static langs:Lang.SearchBar}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/Search_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Style="{StaticResource ListBoxItemNew}" Tag="{x:Static data:MessageToken.TagDemoCtl}" Content="{x:Static langs:Lang.Tag}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/Tag_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Style="{StaticResource ListBoxItemNew}" Tag="{x:Static data:MessageToken.GifImageDemoCtl}" Content="{x:Static langs:Lang.GifImage}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/Animation_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Style="{StaticResource ListBoxItemNew}" Tag="{x:Static data:MessageToken.OutlineTextDemoCtl}" Content="{x:Static langs:Lang.OutlineText}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/TextBlock_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.CirclePanelDemoCtl}" Content="{x:Static langs:Lang.CirclePanel}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/ColorWheel_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.CircleProgressBarDemoCtl}" Content="{x:Static langs:Lang.CircleProgressBar}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/ShapeArcRing_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.StepBarDemoCtl}" Content="{x:Static langs:Lang.StepBar}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/Flow_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.GrowlDemoCtl}" Content="{x:Static langs:Lang.Growl}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/Message_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.LoadingDemoCtl}" Content="{x:Static langs:Lang.Loading}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/Loading_Blue_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.ImageBrowserDemoCtl}" Content="{x:Static langs:Lang.ImageBrowser}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/ImageBrowser_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.ColorPickerDemoCtl}" Content="{x:Static langs:Lang.ColorPicker}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/ColorPalette_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.CarouselDemoCtl}" Content="{x:Static langs:Lang.Carousel}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/Carousel_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.CompareSliderDemoCtl}" Content="{x:Static langs:Lang.CompareSlider}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/SplitterControl_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.PreviewSliderDemoCtl}" Content="{x:Static langs:Lang.PreviewSlider}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/HoverMenu_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.TimeBarDemoCtl}" Content="{x:Static langs:Lang.TimeBar}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/Timeline_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.PaginationDemoCtl}" Content="{x:Static langs:Lang.Pagination}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/Paginator_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.AnimationPathDemoCtl}" Content="{x:Static langs:Lang.AnimationPath}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/Path_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.TabControlDemoCtl}" Content="{x:Static langs:Lang.TabControl}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/TabPage_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.ScrollViewerDemoCtl}" Content="{x:Static langs:Lang.ScrollViewer}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/ScrollBox_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
<ListBoxItem Tag="{x:Static data:MessageToken.WindowDemoCtl}" Content="{x:Static langs:Lang.Window}">
<controls:EdgeElement.LeftContent>
<Image Source="../../Resources/Img/LeftMainContent/WindowsForm_16x.png"/>
</controls:EdgeElement.LeftContent>
</ListBoxItem>
</ListBox>
</TabItem>
</TabControl>
</Border>
@@ -1,30 +0,0 @@
using System.Windows.Controls;
// ReSharper disable once CheckNamespace
namespace HandyControlDemo.UserControl
{
/// <summary>
/// 左侧主内容
/// </summary>
public partial class LeftMainContent
{
public LeftMainContent()
{
InitializeComponent();
}
private void TabControl_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count == 0) return;
if (e.AddedItems[0] is TabItem tabItem && tabItem.Content is ListBox listBox)
{
if (listBox.SelectedItem != null)
{
var item = listBox.SelectedItem;
listBox.SelectedIndex = -1;
listBox.SelectedItem = item;
}
}
}
}
}
@@ -1,28 +0,0 @@
<UserControl x:Class="HandyControlDemo.UserControl.GroupBoxDemoCtl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Background="{DynamicResource RegionBrush}"
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
xmlns:controls="clr-namespace:HandyControl.Controls;assembly=HandyControl">
<controls:TransitioningContentControl>
<ScrollViewer>
<UniformGrid Margin="32">
<GroupBox Width="300" Height="300" Header="{x:Static langs:Lang.TitleDemoStr1}" Padding="10" Margin="16">
<Border Background="{DynamicResource PrimaryBrush}" CornerRadius="4">
<TextBlock Text="{x:Static langs:Lang.ContentDemoStr}" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="White"/>
</Border>
</GroupBox>
<GroupBox Width="300" Height="300" Header="{x:Static langs:Lang.TitleDemoStr1}" Padding="10" Margin="16" Style="{StaticResource GroupBoxOriginal}" HorizontalContentAlignment="Left">
<Border Background="{DynamicResource PrimaryBrush}" CornerRadius="4">
<TextBlock Text="{x:Static langs:Lang.ContentDemoStr}" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="White"/>
</Border>
</GroupBox>
<GroupBox Width="300" Height="300" Header="{x:Static langs:Lang.TitleDemoStr1}" Padding="10" Margin="16" Style="{StaticResource GroupBoxTab}">
<Border Background="{DynamicResource PrimaryBrush}" CornerRadius="4">
<TextBlock Text="{x:Static langs:Lang.ContentDemoStr}" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="White"/>
</Border>
</GroupBox>
</UniformGrid>
</ScrollViewer>
</controls:TransitioningContentControl>
</UserControl>
+2 -2
View File
@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2018 纳边
Copyright (c) 2018 HandyOrg
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
SOFTWARE.
+144 -22
View File
@@ -1,11 +1,127 @@
![logo](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/icon.png)
![csharp-version](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/csharp-version.png) ![IDE-version](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/IDE-version.png) [![nuget-version](https://img.shields.io/nuget/v/HandyControl.svg)](https://www.nuget.org/packages/HandyControl) [![build-status](https://ci.appveyor.com/api/projects/status/github/NaBian/handycontrol?svg=true)](https://ci.appveyor.com/project/NaBian/handycontrol) [![Join the chat at https://gitter.im/HandyControl/Lobby](https://badges.gitter.im/HandyControl/Lobby.svg)](https://gitter.im/HandyControl/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
![dotnet-version](https://img.shields.io/badge/.net-%3E%3D4.0-blue.svg) ![csharp-version](https://img.shields.io/badge/C%23-7.0-blue.svg) ![IDE-version](https://img.shields.io/badge/IDE-vs2017-blue.svg) [![nuget-version](https://img.shields.io/nuget/v/HandyControl.svg)](https://www.nuget.org/packages/HandyControl) [![build-status](https://ci.appveyor.com/api/projects/status/github/handyorg/handycontrol?svg=true)](https://ci.appveyor.com/project/NaBian/handycontrol) [![Join the chat at https://gitter.im/HandyControl/Lobby](https://badges.gitter.im/HandyControl/Lobby.svg)](https://gitter.im/HandyControl/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![qq-group](https://img.shields.io/badge/qq-714704041-red.svg)](//shang.qq.com/wpa/qunwpa?idkey=a571e5553c9d41e49c4f22f3a8b2865451497a795ff281fedf3285def247efc1)
[![wiki](https://img.shields.io/badge/wiki-Complete-brightgreen.svg)](https://github.com/ghost1372/HandyControl/wiki)
# Welcome to HandyControl
## We're all here
![qq-group](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/qq-group.png)
## 面向中国
### 中文文档(刚开始写)
[https://handyorg.github.io/handycontrol/](https://handyorg.github.io/handycontrol/)
### 捐赠
如果您觉得HandyControl还不错,并且刚好有些闲钱,那么可以选择以下两种方式来捐赠:
* [以HandyControl的名义为慈善事业做贡献](http://www.chinacharityfederation.org/ConfirmDonation/0.html?zhijie=3)
* 为我们购买防脱洗发水
![qrcode](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/qrcode.png)
## Special thanks to
[![JetBrains](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/resharper_logo.png)](https://www.jetbrains.com/?from=HandyControl)
## Usage
Step 1:Add a reference to HandyControl or search for HandyControl on the nuget;
```Install-Package HandyControl```
Step 2:Add code in App.xaml as follows:
```XML
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
```
Step 3:enjoy coding
## Latest examples
### NotifyIcon
![NotifyIcon](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/NotifyIcon.png)
### Dialog
![Dialog](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/Dialog.png)
### WaveProgressBar
![WaveProgressBar](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/WaveProgressBar.gif)
### Badge
![Badge](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/Badge.png)
### Gravatar
![Gravatar](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/Gravatar.gif)
## History publication
### GoToTop
![GoToTop](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/GoToTop.gif)
### ChatBubble
![ChatBubble](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/ChatBubble.png)
### Label
![Label](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/Label.png)
### Transfer
![Transfer](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/Transfer.png)
### ProgressButton
![ProgressButton](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/ProgressButton.png)
### CoverFlow
![CoverFlow](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/CoverFlow.gif)
### CoverView
![CoverView](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/CoverView.gif)
### MessageBox
![MessageBox](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/MessageBox.png)
### WaterfallPanel
![WaterfallPanel](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/WaterfallPanel.png)
### Rate
![Rate](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/Rate.png)
### BlurWindow
![BlurWindow](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/BlurWindow.png)
### FlipClock
![FlipClock](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/FlipClock.gif)
### Shield
![Shield](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/Shield.png)
### OutlineText
![OutlineText](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/OutlineText.png)
@@ -26,8 +142,6 @@
![CircleProgressBar](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/CircleProgressBar.png)
## History publication
### ButtonStyle
![ButtonStyle](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/Button.png)
@@ -92,6 +206,10 @@
![ImageBrowser](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/ImageBrowser.gif)
### PreviewSlider
![PreviewSlider](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/PreviewSlider.gif)
### CompareSlider
![CompareSlider](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/CompareSlider-h.gif)
@@ -118,6 +236,10 @@
![TabControlStyle](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/TabControl.png)
### GroupBox
![GroupBox](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/GroupBox.png)
### StepBar
![StepBar](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/StepBar.png)
@@ -158,6 +280,14 @@
![ComboBox](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/ComboBox.jpg)
### NumericUpDown
![NumericUpDown](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/NumericUpDown.png)
### SearchBar
![SearchBar](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/SearchBar.png)
### PasswordBox
![PasswordBox](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/PasswordBox.jpg)
@@ -170,6 +300,14 @@
![TimePicker](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/TimePicker.jpg)
### DateTimePicker
![DateTimePicker](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/DateTimePicker.png)
### ScrollViewer
![ScrollViewer](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/ScrollViewer.png)
### CirclePanel
![CirclePanel](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/CirclePanel.jpg)
@@ -178,26 +316,10 @@
![BorderStyle](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/Border.png)
# Usage
### Brush
Step 1:Add a reference to HandyControl or search for HandyControl on the nuget;
Step 2:Add code in App.xaml as follows:
```XML
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/>
<ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
```
Step 3:enjoy coding
![Brush](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/Brush.png)
# Switching configuration
## Switching configuration
![Switching configuration](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/SwitchConfig.png)
# Discussion
![DataGrid](https://raw.githubusercontent.com/NaBian/HandyControl/master/Resources/qq-group.jpg)
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

+7
View File
@@ -0,0 +1,7 @@
.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
+87
View File
@@ -0,0 +1,87 @@
# Hexo Configuration
## Docs: https://hexo.io/docs/configuration.html
## Source: https://github.com/hexojs/hexo/
# Site
title: HandyOrg
subtitle: everything can be handy
description: everything can be handy
keywords:
author: HandyOrg
language: zh-CN
timezone:
# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://yoursite.com
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:
# Directory
source_dir: source
public_dir: public
tag_dir: tags
archive_dir: archives
category_dir: categories
code_dir: downloads/code
i18n_dir: :lang
skip_render:
# Writing
new_post_name: :title.md # File name of new posts
default_layout: post
titlecase: false # Transform title into titlecase
external_link: true # Open external links in new tab
filename_case: 0
render_drafts: false
post_asset_folder: false
relative_link: false
future: true
highlight:
enable: true
line_number: true
auto_detect: false
tab_replace:
# Home page setting
# path: Root path for your blogs index page. (default = '')
# per_page: Posts displayed per page. (0 = disable pagination)
# order_by: Posts order. (Order by date descending by default)
index_generator:
path: ''
per_page: 10
order_by: -date
# Category & Tag
default_category: uncategorized
category_map:
tag_map:
# Date / Time format
## Hexo uses Moment.js to parse and display date
## You can customize the date format as defined in
## http://momentjs.com/docs/#/displaying/format/
date_format: YYYY-MM-DD
time_format: HH:mm:ss
# Pagination
## Set per_page to 0 to disable pagination
per_page: 10
pagination_dir: page
# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: next
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type:
search:
path: search.xml
field: page
format: html
limit: 10000
+3875
View File
File diff suppressed because it is too large. Load diff
+20
View File
@@ -0,0 +1,20 @@
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"hexo": {
"version": "3.8.0"
},
"dependencies": {
"hexo": "^3.8.0",
"hexo-generator-archive": "^0.1.5",
"hexo-generator-category": "^0.1.3",
"hexo-generator-index": "^0.2.1",
"hexo-generator-searchdb": "^1.0.8",
"hexo-generator-tag": "^0.2.0",
"hexo-renderer-ejs": "^0.3.1",
"hexo-renderer-marked": "^0.3.2",
"hexo-renderer-stylus": "^0.3.3",
"hexo-server": "^0.3.3"
}
}
+4
View File
@@ -0,0 +1,4 @@
---
title: {{ title }}
tags:
---
+4
View File
@@ -0,0 +1,4 @@
---
title: {{ title }}
date: {{ date }}
---
+5
View File
@@ -0,0 +1,5 @@
---
title: {{ title }}
date: {{ date }}
tags:
---
+17
View File
@@ -0,0 +1,17 @@
---
title: 欢迎来到HandyOrg
---
HandyOrg的宗旨是为用户提供最简单的API。
目前组织成员只有一人。
我们一直期待着有更多的同学加入。
我们的入坑要求:
- 热爱编码
- 接受目前Handy的代码风格,并尽量遵守
- 项目名必须以Handy为前缀
- 活着
我们的QQ群:714704041
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
+5
View File
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,18 @@
---
title: 行为
---
# 流体移动
| 名称 | 用途 |
|-|-|
| BehaviorXY200 | 流体移动行为,x、y轴运动,200毫秒结束动画 |
| BehaviorX200 | 流体移动行为,x轴运动,200毫秒结束动画 |
| BehaviorY200 | 流体移动行为,y轴运动,200毫秒结束动画 |
| BehaviorXY400 | 流体移动行为,x、y轴运动,400毫秒结束动画 |
| BehaviorX400 | 流体移动行为,x轴运动,400毫秒结束动画 |
| BehaviorY400 | 流体移动行为,y轴运动,400毫秒结束动画 |
{% note info no-icon %}
用例:`controls:PanelElement.FluidMoveBehavior="{StaticResource BehaviorXY200}"`
{% endnote %}
@@ -0,0 +1,40 @@
---
title: 画刷
---
画刷基于颜色,现有的画刷定义如下:
| 名称 | 用途 |
|-|-|
| PrimaryBrush | 主色调 |
| DarkPrimaryBrush | 主色调(深色) |
| DangerBrush | 错误、危险 |
| DarkDangerBrush | 错误、危险(深色) |
| WarningBrush | 警告 |
| DarkWarningBrush | 警告(深色) |
| InfoBrush | 信息 |
| DarkInfoBrush | 信息(深色) |
| SuccessBrush | 成功 |
| DarkSuccessBrush | 成功(深色) |
| PrimaryTextBrush | 主文本 |
| SecondaryTextBrush | 次级文本 |
| ThirdlyTextBrush | 末级文本 |
| ReverseTextBrush | 反色文本 |
| TextIconBrush | 一般用于深色背景下的文字或图标 |
| BorderBrush | 边框 |
| SecondaryBorderBrush | 次级边框 |
| BackgroundBrush | 主背景色 |
| RegionBrush | 区域块背景 |
| SecondaryRegionBrush | 次级区域块背景 |
| ThirdlyRegionBrush | 末级区域块背景 |
| TitleBrush | 标题背景 |
| DefaultBrush | 默认颜色 |
| DarkDefaultBrush | 次级默认颜色 |
| AccentBrush | 提醒 |
| DarkAccentBrush | 提醒(深色) |
| DarkMaskBrush | 作为遮罩使用 |
| DarkOpacityBrush | 半透明背景 |
{% note info no-icon %}
用例:`Foreground="{DynamicResource PrimaryBrush}"`
{% endnote %}
@@ -0,0 +1,50 @@
---
title: 颜色
---
内置的颜色xaml定义有3个,对它们的描述如下表所示:
| 名称 | 用途 |
|-|-|
| Colors.xaml | 默认配置 |
| ColorsDark.xaml | 暗色配置 |
| ColorsViolet.xaml | 紫色配置 |
每个文件中定义了相同的颜色名称,只是颜色值不同,对颜色名称的描述如下表所示:
| 名称 | 用途 |
|-|-|
| PrimaryColor | 主色调 |
| DarkPrimaryColor | 主色调(深色) |
| DangerColor | 错误、危险 |
| DarkDangerColor | 错误、危险(深色) |
| WarningColor | 警告 |
| DarkWarningColor | 警告(深色) |
| InfoColor | 信息 |
| DarkInfoColor | 信息(深色) |
| SuccessColor | 成功 |
| DarkSuccessColor | 成功(深色) |
| PrimaryTextColor | 主文本 |
| SecondaryTextColor | 次级文本 |
| ThirdlyTextColor | 末级文本 |
| ReverseTextColor | 反色文本 |
| TextIconColor | 一般用于深色背景下的文字或图标 |
| BorderColor | 边框 |
| SecondaryBorderColor | 次级边框 |
| BackgroundColor | 主背景色 |
| RegionColor | 区域块背景 |
| SecondaryRegionColor | 次级区域块背景 |
| ThirdlyRegionColor | 末级区域块背景 |
| TitleColor | 标题背景 |
| SecondaryTitleColor | 次级标题背景 |
| DefaultColor | 默认颜色 |
| DarkDefaultColor | 次级默认颜色 |
| AccentColor | 提醒 |
| DarkAccentColor | 提醒(深色) |
| DarkMaskColor | 作为遮罩使用 |
| DarkOpacityColor | 半透明背景 |
| BlurGradientValue | 仅用于模糊窗口的背景 |
{% note info no-icon %}
用例:`Color="{DynamicResource PrimaryColor}"`
{% endnote %}
@@ -0,0 +1,72 @@
---
title: 转换器
---
# Boolean2BooleanReConverter
该转换器用于反转布尔类型
# Boolean2StrConverter
该转换器需要提供一个字符串作为参数,该字符串的一般形式为:`[字符串0];[字符串1]`,当转换器获取的值为`true`时,会返回`[字符串0]`,否则返回`[字符串1]`。
# Boolean2VisibilityConverter
该转换器会将`true`转换为`Visible`,会将`false`转换为`Collapse`
# Boolean2VisibilityReConverter
该转换器情况与`Boolean2VisibilityConverter`相反。
# BooleanArr2VisibilityConverter
该转换器会将布尔数组转换为`Visibility`,当数组内全部为`true`时,返回`Visible`,否则返回`Collapse`。
# BorderCircularConverter
该转换器为Border专用,接受`Border`的长和宽合成的一个整型数组,返回它们中最小值的一半,作为圆形Border的半径。
# BorderClipConverter
该转换器为Border专用,接受一个object数组,该数组长度为3,分别对应Border的长、宽和圆角半径,它会返回一个圆形几何形状作为Clip来剪裁Border。
# Color2ChannelAConverter(内部使用)
该转换器会提取`SolidColorBrush.Color`的透明通道(A)的值。
# Color2HexStrConverter
该转换器会将`SolidColorBrush`转换为16进制字符串形式(带“#”)。
# Int2StrConverter
该转换器需要提供一个字符串作为参数,该字符串的一般形式为:`[字符串0];[字符串1];...[字符串n]`,转换器会将一个整型的值作为索引,来获取指定位置的字符串并返回。
# Long2FileSizeConverter
该转换器会将长整型转换为文件大小的字符串。
# Object2BooleanConverter
如果该转换器获取到的值为`null`则返回`false`,否则返回`true`。
# String2VisibilityConverter
该转换器接受一个字符串,如果该字符串为空或者为null,则返回`Collapse`,否则返回`Visible`。
# String2VisibilityReConverter
该转换器情况与`String2VisibilityConverter`相反。
# TreeViewItemMarginConverter(内部使用)
该转换器用于为TreeViewItem提供适当的左边距。
{% note info no-icon %}
用例:
{% code %}
Visibility="{Binding ShowButton,Converter={StaticResource Boolean2VisibilityConverter}}"
{% endcode %}
{% endnote %}
@@ -0,0 +1,18 @@
---
title: 效果
---
# 阴影
目前只包含5个级别的阴影效果:
| 名称 | 半径 |
|-|-|
| EffectShadow1 | 5 |
| EffectShadow2 | 8 |
| EffectShadow3 | 14 |
| EffectShadow4 | 25 |
| EffectShadow5 | 35 |
{% note info no-icon %}
用例:`Effect="{StaticResource EffectShadow5}"`
{% endnote %}
@@ -0,0 +1,14 @@
---
title: 字体大小
---
| 名称 | 大小 | 用途 |
|-|-|
| LargeFontSize | 24 | 页面标题 |
| HeadFontSize | 20 | 功能标题 |
| SubHeadFontSize | 16 | 子功能标题 |
| TextFontSize | 12 | 文本 |
{% note info no-icon %}
用例:`FontSize="{StaticResource LargeFontSize}"`
{% endnote %}
@@ -0,0 +1,47 @@
---
title: 几何形状
---
HandyControl中自带了一些几何形状定义,但要应用于生产中显然不够。我们不准备包罗万象,这永远没有底,所以我们就反其道而行,只包含了控件库自己要用的(当然用户也可使用),其余请自行扩展。下表中列出了控件库中所有的形状定义:
| 名称 | 描述 |
|-|-|
| CalendarGeometry | 日历 |
| DeleteGeometry | 删除 |
| DeleteFillCircleGeometry | 删除(圆形填充) |
| CloseGeometry | 关闭 |
| DownGeometry | 下 |
| UpGeometry | 上 |
| ClockGeometry | 时钟 |
| LeftGeometry | 左 |
| RightGeometry | 右 |
| RotateLeftGeometry | 向左旋转 |
| EnlargeGeometry | 放大 |
| ReduceGeometry | 缩小 |
| DownloadGeometry | 下载 |
| SaveGeometry | 保存 |
| WindowsGeometry | 窗口 |
| FullScreenGeometry | 全屏 |
| FullScreenReturnGeometry | 全屏返回 |
| SearchGeometry | 搜索 |
| UpDownGeometry | 上和下的组合 |
| WindowMinGeometry | 窗口最小化 |
| WindowRestoreGeometry | 窗口还原 |
| WindowMaxGeometry | 窗口最大化 |
| AudioGeometry | 声音 |
| BubbleTailGeometry | 气泡的尾巴 |
| StarGeometry | 爱心 |
| AddGeometry | 加 |
| SubGeometry | 减 |
| WarningGeometry | 警告 |
| InfoGeometry | 信息 |
| ErrorGeometry | 错误 |
| SuccessGeometry | 成功 |
| FatalGeometry | 严重 |
| AskGeometry | 询问 |
| AllGeometry | 所有 |
| DragGeometry | 拖拽(用于工具条) |
{% note info no-icon %}
用例:`Data="{StaticResource DragGeometry}"`
{% endnote %}
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

@@ -0,0 +1,21 @@
---
title: 基础xaml定义
---
基础xaml定义都在Basic文件夹中,其内部结构如下:
![Basic_Structure](images/Basic_Structure.png)
对它们的描述如下表所示:
| 名称 | 用途 |
|-|-|
| Colors | 包含内置的3个颜色定义文件 |
| Basic.xaml | 包装好的基础xaml定义 |
| Behaviors.xaml | 包含所有的行为定义 |
| Brushes.xaml | 包含所有的画刷定义 |
| Converters.xaml | 包含所有的转换器定义 |
| Effects.xaml | 包含所有的效果定义 |
| Fonts.xaml | 包含所有的字体大小定义 |
| Geometries.xaml | 包含所有的几何形状定义,多用于Path |
| Paths.xaml | 包含所有的Path路径定义 |
| Sizes.xaml | 包含所有的尺寸定义 |
@@ -0,0 +1,30 @@
---
title: Path路径
---
和几何形状一样,我们不准备包罗万象,只求所需。下表中列出了控件库中所有的Path路径:
| 名称 | 描述 |
|-|-|
| PathBaseStyle | Path路径基样式 |
| SearchPathStyle | 搜索 |
| FullScreenReturnPathStyle | 全屏返回 |
| FullScreenPathStyle | 全屏 |
| WindowsPathStyle | 窗口 |
| SavePathStyle | 保存 |
| DownloadPathStyle | 下载 |
| EnlargePathStyle | 放大 |
| ReducePathStyle | 缩小 |
| RotatePathStyle | 向左旋转(默认) |
| CalendarPathStyle | 日历 |
| DeletePathStyle | 删除 |
| ClosePathStyle | 关闭 |
| DownPathStyle | 下 |
| ClockPathStyle | 时钟 |
| LeftPathStyle | 向左 |
| RightPathStyle | 向右 |
| UpDownPathStyle | 上和下的组合 |
{% note info no-icon %}
用例:`Style="{StaticResource SearchPathStyle}"`
{% endnote %}
@@ -0,0 +1,14 @@
---
title: 尺寸
---
| 名称 | 类型 | 值 | 描述 |
|-|-|
| DefaultControlHeight | System.Double | 30 | 默认控件高度 |
| DefaultControlPadding | System.Windows.Thickness | 12,6 | 默认控件内边距 |
| DefaultInputPadding | System.Windows.Thickness | 8,6 |默认输入控件内边距 |
| DefaultCornerRadius | System.Windows.CornerRadius | 4 | 默认圆角 |
{% note info no-icon %}
用例:`CornerRadius="{StaticResource DefaultCornerRadius}"`
{% endnote %}
@@ -0,0 +1,47 @@
---
title: GrowlInfo
date: 2019-04-02 22:16:16
---
{% note info no-icon %}
class
{% endnote %}
{% note info no-icon %}
Growl消息初始化模型
{% endnote %}
|成员名|类型|说明|默认值|
|-|-|-|-|
| Message | string | 通知内容 | - |
| ShowDateTime | bool | 是否显示通知时间 | true |
| WaitTime | int | 等待自动关闭时间 | 6 |
| CancelStr | string | 取消字符串 | Lang.Cancel |
| ConfirmStr | string | 确认字符串 | Lang.Confirm |
| ActionBeforeClose | Func<bool, bool> | 关闭前的委托 | - |
| StaysOpen | bool | 保持打开 | false |
| IsCustom | bool | 是否自定义行为 | false |
| Type | InfoType | 消息类型 | InfoType.Success |
| IconKey | string | 图标键名 | - |
| IconBrushKey | string | 图标画刷键名 | - |
| ShowCloseButton | bool | 是否显示关闭按钮 | true |
| Token | string | 消息标记 | - |
## FAQ
{% note info no-icon %}
这里的IconKey和IconBrushKey我该填什么啊?
{% endnote %}
IconKey必须填资源类型为`Geometry`的Key名,例如以下的资源,它的Key名`GitterGeometry`就可以作为IconKey:
``` xml
<Geometry x:Key="GitterGeometry">M260.8 645H160V0h100.8v645zM461.8 152.2h-100.8V1024h100.8V152.2z m201.2 0h-100.8V1024h100.8V152.2zM864 152h-100.8v494H864V152z</Geometry>
```
IconBrushKey必须填资源类型为`Brush`的Key名,例如以下的资源,它的Key名`ToolBarBackground`就可以作为IconBrushKey:
``` xml
<LinearGradientBrush x:Key="ToolBarBackground" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#F5F4F5" Offset="0"/>
<GradientStop Color="#D1CFD1" Offset="1"/>
</LinearGradientBrush>
```
@@ -0,0 +1,21 @@
---
title: InfoType
date: 2019-04-02 22:27:13
---
{% note info no-icon %}
enum(int)
{% endnote %}
{% note info no-icon %}
消息类型
{% endnote %}
|成员名|值|说明|
|-|-|-|
| Success | 0 | 成功 |
| Info | 1 | 信息 |
| Warning | 2 | 警告 |
| Error | 3 | 错误 |
| Fatal | 4 | 严重 |
| Ask | 5 | 询问 |
+5
View File
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
@@ -0,0 +1,5 @@
---
title: 建设中
---
建设中
Loaded 100 of 1920 files, more files were not shown because too many files have changed in this diff. Show more