Merge branch 'master' into pr/22
No files matched your search
@@ -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
|
||||
@@ -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
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
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>
|
||||
@@ -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.
|
||||
@@ -1,11 +1,127 @@
|
||||

|
||||
|
||||
  [](https://www.nuget.org/packages/HandyControl) [](https://ci.appveyor.com/project/NaBian/handycontrol) [](https://gitter.im/HandyControl/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
   [](https://www.nuget.org/packages/HandyControl) [](https://ci.appveyor.com/project/NaBian/handycontrol) [](https://gitter.im/HandyControl/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](//shang.qq.com/wpa/qunwpa?idkey=a571e5553c9d41e49c4f22f3a8b2865451497a795ff281fedf3285def247efc1)
|
||||
[](https://github.com/ghost1372/HandyControl/wiki)
|
||||
|
||||
# Welcome to HandyControl
|
||||
|
||||
## We're all here
|
||||
|
||||

|
||||
|
||||
## 面向中国
|
||||
|
||||
### 中文文档(刚开始写)
|
||||
|
||||
[https://handyorg.github.io/handycontrol/](https://handyorg.github.io/handycontrol/)
|
||||
|
||||
### 捐赠
|
||||
如果您觉得HandyControl还不错,并且刚好有些闲钱,那么可以选择以下两种方式来捐赠:
|
||||
|
||||
* [以HandyControl的名义为慈善事业做贡献](http://www.chinacharityfederation.org/ConfirmDonation/0.html?zhijie=3)
|
||||
|
||||
* 为我们购买防脱洗发水
|
||||

|
||||
|
||||
## Special thanks to
|
||||
|
||||
[](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
|
||||
|
||||

|
||||
|
||||
### Dialog
|
||||
|
||||

|
||||
|
||||
### WaveProgressBar
|
||||
|
||||

|
||||
|
||||
### Badge
|
||||
|
||||

|
||||
|
||||
### Gravatar
|
||||
|
||||

|
||||
|
||||
## History publication
|
||||
|
||||
### GoToTop
|
||||
|
||||

|
||||
|
||||
### ChatBubble
|
||||
|
||||

|
||||
|
||||
### Label
|
||||
|
||||

|
||||
|
||||
### Transfer
|
||||
|
||||

|
||||
|
||||
### ProgressButton
|
||||
|
||||

|
||||
|
||||
### CoverFlow
|
||||
|
||||

|
||||
|
||||
### CoverView
|
||||
|
||||

|
||||
|
||||
### MessageBox
|
||||
|
||||

|
||||
|
||||
### WaterfallPanel
|
||||
|
||||

|
||||
|
||||
### Rate
|
||||
|
||||

|
||||
|
||||
### BlurWindow
|
||||
|
||||

|
||||
|
||||
### FlipClock
|
||||
|
||||

|
||||
|
||||
### Shield
|
||||
|
||||

|
||||
|
||||
### OutlineText
|
||||
|
||||

|
||||
@@ -26,8 +142,6 @@
|
||||
|
||||

|
||||
|
||||
## History publication
|
||||
|
||||
### ButtonStyle
|
||||
|
||||

|
||||
@@ -92,6 +206,10 @@
|
||||
|
||||

|
||||
|
||||
### PreviewSlider
|
||||
|
||||

|
||||
|
||||
### CompareSlider
|
||||
|
||||

|
||||
@@ -118,6 +236,10 @@
|
||||
|
||||

|
||||
|
||||
### GroupBox
|
||||
|
||||

|
||||
|
||||
### StepBar
|
||||
|
||||

|
||||
@@ -158,6 +280,14 @@
|
||||
|
||||

|
||||
|
||||
### NumericUpDown
|
||||
|
||||

|
||||
|
||||
### SearchBar
|
||||
|
||||

|
||||
|
||||
### PasswordBox
|
||||
|
||||

|
||||
@@ -170,6 +300,14 @@
|
||||
|
||||

|
||||
|
||||
### DateTimePicker
|
||||
|
||||

|
||||
|
||||
### ScrollViewer
|
||||
|
||||

|
||||
|
||||
### CirclePanel
|
||||
|
||||

|
||||
@@ -178,26 +316,10 @@
|
||||
|
||||

|
||||
|
||||
# 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
|
||||

|
||||
|
||||
# Switching configuration
|
||||
## Switching configuration
|
||||
|
||||

|
||||
|
||||
# Discussion
|
||||
|
||||

|
||||
|
After Width: | Height: | Size: 4.2 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 310 KiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 490 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 125 KiB |
|
After Width: | Height: | Size: 113 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 41 KiB |
|
After Width: | Height: | Size: 7.2 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 8.0 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 19 KiB |
@@ -0,0 +1,7 @@
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
db.json
|
||||
*.log
|
||||
node_modules/
|
||||
public/
|
||||
.deploy*/
|
||||
@@ -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
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
title: {{ title }}
|
||||
tags:
|
||||
---
|
||||
@@ -0,0 +1,4 @@
|
||||
---
|
||||
title: {{ title }}
|
||||
date: {{ date }}
|
||||
---
|
||||
@@ -0,0 +1,5 @@
|
||||
---
|
||||
title: {{ title }}
|
||||
date: {{ date }}
|
||||
tags:
|
||||
---
|
||||
@@ -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: 建设中
|
||||
---
|
||||
|
||||
建设中
|
||||
@@ -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 %}
|
||||
|
After Width: | Height: | Size: 5.2 KiB |
@@ -0,0 +1,21 @@
|
||||
---
|
||||
title: 基础xaml定义
|
||||
---
|
||||
|
||||
基础xaml定义都在Basic文件夹中,其内部结构如下:
|
||||

|
||||
|
||||
对它们的描述如下表所示:
|
||||
|
||||
| 名称 | 用途 |
|
||||
|-|-|
|
||||
| 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 | 询问 |
|
||||
@@ -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: 建设中
|
||||
---
|
||||
|
||||
建设中
|
||||