Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jobily
HandyControl
提交
8e707a66
H
HandyControl
项目概览
jobily
/
HandyControl
10 个月 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
HandyControl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
8e707a66
编写于
1月 23, 2023
作者:
N
NaBian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enhance: optimize input elements.
上级
322e3669
变更
52
展开全部
隐藏空白更改
内联
并排
Showing
52 changed file
with
5080 addition
and
7075 deletion
+5080
-7075
src/Net_40/HandyControl_Net_40/Themes/Styles/Base/CheckComboBoxBaseStyle.xaml
...rol_Net_40/Themes/Styles/Base/CheckComboBoxBaseStyle.xaml
+277
-336
src/Net_40/HandyControl_Net_40/Themes/Styles/Base/ComboBoxBaseStyle.xaml
...yControl_Net_40/Themes/Styles/Base/ComboBoxBaseStyle.xaml
+601
-763
src/Net_40/HandyControl_Net_40/Themes/Styles/Window.xaml
src/Net_40/HandyControl_Net_40/Themes/Styles/Window.xaml
+8
-9
src/Net_40/HandyControl_Net_40/Themes/Theme.xaml
src/Net_40/HandyControl_Net_40/Themes/Theme.xaml
+1207
-1613
src/Shared/HandyControlDemo_Shared/MainWindow.xaml
src/Shared/HandyControlDemo_Shared/MainWindow.xaml
+18
-19
src/Shared/HandyControlDemo_Shared/Tools/Helper/VersionHelper.cs
...red/HandyControlDemo_Shared/Tools/Helper/VersionHelper.cs
+18
-18
src/Shared/HandyControlDemo_Shared/UserControl/Controls/CheckComboBoxDemoCtl.xaml
...emo_Shared/UserControl/Controls/CheckComboBoxDemoCtl.xaml
+14
-14
src/Shared/HandyControlDemo_Shared/UserControl/Controls/ComboBoxDemoCtl.xaml
...trolDemo_Shared/UserControl/Controls/ComboBoxDemoCtl.xaml
+16
-16
src/Shared/HandyControlDemo_Shared/UserControl/Controls/DatePickerDemoCtl.xaml
...olDemo_Shared/UserControl/Controls/DatePickerDemoCtl.xaml
+6
-6
src/Shared/HandyControlDemo_Shared/UserControl/Controls/DateTimePickerDemoCtl.xaml
...mo_Shared/UserControl/Controls/DateTimePickerDemoCtl.xaml
+12
-12
src/Shared/HandyControlDemo_Shared/UserControl/Controls/NumericUpDownDemoCtl.xaml
...emo_Shared/UserControl/Controls/NumericUpDownDemoCtl.xaml
+32
-32
src/Shared/HandyControlDemo_Shared/UserControl/Controls/PasswordBoxDemoCtl.xaml
...lDemo_Shared/UserControl/Controls/PasswordBoxDemoCtl.xaml
+8
-8
src/Shared/HandyControlDemo_Shared/UserControl/Controls/SearchBarDemoCtl.xaml
...rolDemo_Shared/UserControl/Controls/SearchBarDemoCtl.xaml
+34
-34
src/Shared/HandyControlDemo_Shared/UserControl/Controls/TimePickerDemoCtl.xaml
...olDemo_Shared/UserControl/Controls/TimePickerDemoCtl.xaml
+15
-15
src/Shared/HandyControl_Shared/Controls/Attach/InfoElement.cs
...Shared/HandyControl_Shared/Controls/Attach/InfoElement.cs
+2
-2
src/Shared/HandyControl_Shared/Controls/Attach/TitleElement.cs
...hared/HandyControl_Shared/Controls/Attach/TitleElement.cs
+9
-0
src/Shared/HandyControl_Shared/Controls/Block/ToggleBlock.cs
src/Shared/HandyControl_Shared/Controls/Block/ToggleBlock.cs
+41
-12
src/Shared/HandyControl_Shared/Controls/Input/CheckComboBox/CheckComboBox.cs
...trol_Shared/Controls/Input/CheckComboBox/CheckComboBox.cs
+10
-87
src/Shared/HandyControl_Shared/Controls/Input/ComboBox.cs
src/Shared/HandyControl_Shared/Controls/Input/ComboBox.cs
+1
-133
src/Shared/HandyControl_Shared/Controls/Input/DatePicker.cs
src/Shared/HandyControl_Shared/Controls/Input/DatePicker.cs
+2
-98
src/Shared/HandyControl_Shared/Controls/Input/DateTimePicker.cs
...ared/HandyControl_Shared/Controls/Input/DateTimePicker.cs
+1
-86
src/Shared/HandyControl_Shared/Controls/Input/IDataInput.cs
src/Shared/HandyControl_Shared/Controls/Input/IDataInput.cs
+0
-42
src/Shared/HandyControl_Shared/Controls/Input/PasswordBox.cs
src/Shared/HandyControl_Shared/Controls/Input/PasswordBox.cs
+1
-100
src/Shared/HandyControl_Shared/Controls/Input/TimePicker.cs
src/Shared/HandyControl_Shared/Controls/Input/TimePicker.cs
+1
-86
src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
+0
-1
src/Shared/HandyControl_Shared/Interactivity/Commands/ControlCommands.cs
...yControl_Shared/Interactivity/Commands/ControlCommands.cs
+2
-0
src/Shared/HandyControl_Shared/Themes/Basic/Sizes.xaml
src/Shared/HandyControl_Shared/Themes/Basic/Sizes.xaml
+4
-3
src/Shared/HandyControl_Shared/Themes/Styles/Base/BaseStyle.xaml
...red/HandyControl_Shared/Themes/Styles/Base/BaseStyle.xaml
+25
-24
src/Shared/HandyControl_Shared/Themes/Styles/Base/CheckComboBoxBaseStyle.xaml
...rol_Shared/Themes/Styles/Base/CheckComboBoxBaseStyle.xaml
+293
-358
src/Shared/HandyControl_Shared/Themes/Styles/Base/ComboBoxBaseStyle.xaml
...yControl_Shared/Themes/Styles/Base/ComboBoxBaseStyle.xaml
+745
-909
src/Shared/HandyControl_Shared/Themes/Styles/Base/DataGridBaseStyle.xaml
...yControl_Shared/Themes/Styles/Base/DataGridBaseStyle.xaml
+11
-7
src/Shared/HandyControl_Shared/Themes/Styles/Base/DatePickerBaseStyle.xaml
...ontrol_Shared/Themes/Styles/Base/DatePickerBaseStyle.xaml
+99
-151
src/Shared/HandyControl_Shared/Themes/Styles/Base/DateTimePickerBaseStyle.xaml
...ol_Shared/Themes/Styles/Base/DateTimePickerBaseStyle.xaml
+96
-148
src/Shared/HandyControl_Shared/Themes/Styles/Base/NumericUpDownBaseStyle.xaml
...rol_Shared/Themes/Styles/Base/NumericUpDownBaseStyle.xaml
+14
-14
src/Shared/HandyControl_Shared/Themes/Styles/Base/PasswordBoxBaseStyle.xaml
...ntrol_Shared/Themes/Styles/Base/PasswordBoxBaseStyle.xaml
+34
-91
src/Shared/HandyControl_Shared/Themes/Styles/Base/SearchBarBaseStyle.xaml
...Control_Shared/Themes/Styles/Base/SearchBarBaseStyle.xaml
+9
-9
src/Shared/HandyControl_Shared/Themes/Styles/Base/TabControlBaseStyle.xaml
...ontrol_Shared/Themes/Styles/Base/TabControlBaseStyle.xaml
+4
-4
src/Shared/HandyControl_Shared/Themes/Styles/Base/TextBoxBaseStyle.xaml
...dyControl_Shared/Themes/Styles/Base/TextBoxBaseStyle.xaml
+25
-25
src/Shared/HandyControl_Shared/Themes/Styles/Base/TimePickerBaseStyle.xaml
...ontrol_Shared/Themes/Styles/Base/TimePickerBaseStyle.xaml
+97
-149
src/Shared/HandyControl_Shared/Themes/Styles/Base/ToggleButtonBaseStyle.xaml
...trol_Shared/Themes/Styles/Base/ToggleButtonBaseStyle.xaml
+1
-1
src/Shared/HandyControl_Shared/Themes/Styles/CheckComboBox.xaml
...ared/HandyControl_Shared/Themes/Styles/CheckComboBox.xaml
+10
-5
src/Shared/HandyControl_Shared/Themes/Styles/ComboBox.xaml
src/Shared/HandyControl_Shared/Themes/Styles/ComboBox.xaml
+4
-2
src/Shared/HandyControl_Shared/Themes/Styles/DataGrid.xaml
src/Shared/HandyControl_Shared/Themes/Styles/DataGrid.xaml
+1
-1
src/Shared/HandyControl_Shared/Themes/Styles/DatePicker.xaml
src/Shared/HandyControl_Shared/Themes/Styles/DatePicker.xaml
+6
-2
src/Shared/HandyControl_Shared/Themes/Styles/DateTimePicker.xaml
...red/HandyControl_Shared/Themes/Styles/DateTimePicker.xaml
+6
-2
src/Shared/HandyControl_Shared/Themes/Styles/NumericUpDown.xaml
...ared/HandyControl_Shared/Themes/Styles/NumericUpDown.xaml
+5
-3
src/Shared/HandyControl_Shared/Themes/Styles/PasswordBox.xaml
...Shared/HandyControl_Shared/Themes/Styles/PasswordBox.xaml
+6
-2
src/Shared/HandyControl_Shared/Themes/Styles/SearchBar.xaml
src/Shared/HandyControl_Shared/Themes/Styles/SearchBar.xaml
+5
-3
src/Shared/HandyControl_Shared/Themes/Styles/TextBox.xaml
src/Shared/HandyControl_Shared/Themes/Styles/TextBox.xaml
+5
-3
src/Shared/HandyControl_Shared/Themes/Styles/TimePicker.xaml
src/Shared/HandyControl_Shared/Themes/Styles/TimePicker.xaml
+6
-2
src/Shared/HandyControl_Shared/Themes/Theme.xaml
src/Shared/HandyControl_Shared/Themes/Theme.xaml
+1205
-1609
src/Shared/HandyControl_Shared/Tools/Converter/ThicknessSplitConverter.cs
...Control_Shared/Tools/Converter/ThicknessSplitConverter.cs
+28
-6
未找到文件。
src/Net_40/HandyControl_Net_40/Themes/Styles/Base/CheckComboBoxBaseStyle.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Net_40/HandyControl_Net_40/Themes/Styles/Base/ComboBoxBaseStyle.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Net_40/HandyControl_Net_40/Themes/Styles/Window.xaml
浏览文件 @
8e707a66
...
...
@@ -19,7 +19,7 @@
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ResizeGrip">
<
Grid
Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
<
hc:SimplePanel
Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
<Path Width="11" Height="11" Data="M 9,0 L 11,0 L 11,11 L 0,11 L 0,9 L 3,9 L 3,6 L 6,6 L 6,3 L 9,3 z" HorizontalAlignment="Right" VerticalAlignment="Bottom">
<Path.Fill>
<DrawingBrush TileMode="Tile" Viewbox="0,0,3,3" Viewport="0,0,3,3" ViewportUnits="Absolute" ViewboxUnits="Absolute">
...
...
@@ -35,7 +35,7 @@
</DrawingBrush>
</Path.Fill>
</Path>
</
Grid
>
</
hc:SimplePanel
>
</ControlTemplate>
</Setter.Value>
</Setter>
...
...
@@ -77,7 +77,7 @@
<interactivity:InvokeCommandAction Command="{x:Static shell:SystemCommands.CloseWindowCommand}" />
</interactivity:EventTrigger>
</interactivity:Interaction.Triggers>
<Image IsHitTestVisible="False"
Name="Icon"
Source="{TemplateBinding Icon}" VerticalAlignment="Center" Width="16" Height="16" />
<Image IsHitTestVisible="False" Source="{TemplateBinding Icon}" VerticalAlignment="Center" Width="16" Height="16" />
</Button>
<TextBlock Grid.Column="1" Text="{TemplateBinding Title}" Padding="10,0,0,0" VerticalAlignment="Center">
<TextBlock.Visibility>
...
...
@@ -247,8 +247,7 @@
</ControlTemplate.Triggers>
</ControlTemplate>
<Style x:Key="WindowWin10" BasedOn="{x:Null}" TargetType="hc:Window">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Style x:Key="WindowWin10" TargetType="hc:Window">
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="BorderBrush" Value="#262e2f"/>
<Setter Property="Background" Value="{DynamicResource SecondaryRegionBrush}"/>
...
...
@@ -294,12 +293,12 @@
<ControlTemplate TargetType="hc:ImageBrowser">
<ControlTemplate.Resources>
<Storyboard x:Key="Storyboard1">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_
Grid
Top">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_
Panel
Top">
<EasingDoubleKeyFrame KeyTime="0:0:.1" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="Storyboard2">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_
Grid
Top">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity" Storyboard.TargetName="PART_
Panel
Top">
<EasingDoubleKeyFrame KeyTime="0:0:.4" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
...
...
@@ -310,13 +309,13 @@
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<hc:ImageViewer x:Name="PART_ImageViewer" ShowImgMap="True" BorderThickness="0" Background="#dd000000"/>
<
Grid Name="PART_Grid
Top" Opacity="0" Background="{DynamicResource DarkOpacityBrush}" VerticalAlignment="Top" Grid.Row="0">
<
hc:SimplePanel x:Name="PART_Panel
Top" Opacity="0" Background="{DynamicResource DarkOpacityBrush}" VerticalAlignment="Top" Grid.Row="0">
<StackPanel HorizontalAlignment="Left" VerticalAlignment="Center" Orientation="Horizontal">
<TextBlock Text="{Binding ImgPath,ElementName=PART_ImageViewer}" Foreground="White" Margin="10,0,0,0"/>
<TextBlock Text="{Binding ImgSize,ElementName=PART_ImageViewer,Converter={StaticResource Long2FileSizeConverter}}" Foreground="White" Margin="30,0,0,0"/>
</StackPanel>
<Button Command="interactivity:ControlCommands.Close" Foreground="{DynamicResource TextIconBrush}" shell:WindowChrome.IsHitTestVisibleInChrome="True" Background="Red" Grid.Row="0" Padding="14" hc:IconElement.Geometry="{StaticResource DeleteGeometry}" Style="{StaticResource ButtonIcon}" HorizontalAlignment="Right" VerticalAlignment="Top" Width="40" Height="40"/>
</
Grid
>
</
hc:SimplePanel
>
</Grid>
<ControlTemplate.Triggers>
<Trigger SourceName="PART_ImageViewer" Property="ShowCloseButton" Value="True">
...
...
src/Net_40/HandyControl_Net_40/Themes/Theme.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControlDemo_Shared/MainWindow.xaml
浏览文件 @
8e707a66
<hc:GlowWindow x:Class="HandyControlDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:hc="https://handyorg.github.io/handycontrol"
mc:Ignorable="d"
Title="HandyControlDemo"
ShowTitle="False"
Style="{StaticResource WindowGlow}"
Background="{DynamicResource SecondaryRegionBrush}"
ActiveGlowColor="{DynamicResource PrimaryColor}"
ResizeMode="CanResizeWithGrip"
WindowStartupLocation="CenterScreen"
d:DesignHeight="800"
d:DesignWidth="1400"
hc:Empty.ShowEmpty="True"
Icon="/HandyControlDemo;component/Resources/Img/icon.ico">
<hc:Window x:Class="HandyControlDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:hc="https://handyorg.github.io/handycontrol"
mc:Ignorable="d"
Title="HandyControlDemo"
ShowTitle="False"
Style="{StaticResource WindowWin10}"
Background="{DynamicResource SecondaryRegionBrush}"
ResizeMode="CanResizeWithGrip"
WindowStartupLocation="CenterScreen"
d:DesignHeight="800"
d:DesignWidth="1400"
hc:Empty.ShowEmpty="True"
Icon="/HandyControlDemo;component/Resources/Img/icon.ico">
<ContentControl Name="ControlMain"/>
</hc:
Glow
Window>
</hc:Window>
src/Shared/HandyControlDemo_Shared/Tools/Helper/VersionHelper.cs
浏览文件 @
8e707a66
...
...
@@ -9,41 +9,41 @@ internal class VersionHelper
{
var
versionInfo
=
FileVersionInfo
.
GetVersionInfo
(
Assembly
.
GetEntryAssembly
().
Location
);
#if NET40
var
netVersion
=
"
NET 4
0"
;
var
netVersion
=
"
.NET Framework 4.
0"
;
#elif NET45
var
netVersion
=
"
NET 4
5"
;
var
netVersion
=
"
.NET Framework 4.
5"
;
#elif NET451
var
netVersion
=
"
NET 45
1"
;
var
netVersion
=
"
.NET Framework 4.5.
1"
;
#elif NET452
var
netVersion
=
"
NET 45
2"
;
var
netVersion
=
"
.NET Framework 4.5.
2"
;
#elif NET46
var
netVersion
=
"
NET 4
6"
;
var
netVersion
=
"
.NET Framework 4.
6"
;
#elif NET461
var
netVersion
=
"
NET 46
1"
;
var
netVersion
=
"
.NET Framework 4.6.
1"
;
#elif NET462
var
netVersion
=
"
NET 46
2"
;
var
netVersion
=
"
.NET Framework 4.6.
2"
;
#elif NET47
var
netVersion
=
"
NET 4
7"
;
var
netVersion
=
"
.NET Framework 4.
7"
;
#elif NET471
var
netVersion
=
"
NET 47
1"
;
var
netVersion
=
"
.NET Framework 4.7.
1"
;
#elif NET472
var
netVersion
=
"
NET 47
2"
;
var
netVersion
=
"
.NET Framework 4.7.
2"
;
#elif NET48
var
netVersion
=
"
NET 4
8"
;
var
netVersion
=
"
.NET Framework 4.
8"
;
#elif NET481
var
netVersion
=
"
NET 48
1"
;
var
netVersion
=
"
.NET Framework 4.8.
1"
;
#elif NET5_0
var
netVersion
=
"
NET 5
0"
;
var
netVersion
=
"
.NET 5.
0"
;
#elif NET6_0
var
netVersion
=
"
NET 6
0"
;
var
netVersion
=
"
.NET 6.
0"
;
#elif NET7_0
var
netVersion
=
"
NET 7
0"
;
var
netVersion
=
"
.NET 7.
0"
;
#elif NETCOREAPP3_0
var
netVersion
=
"
CORE 3
0"
;
var
netVersion
=
"
.NET CORE 3.
0"
;
#elif NETCOREAPP3_1
var
netVersion
=
"
CORE 3
1"
;
var
netVersion
=
"
.NET CORE 3.
1"
;
#endif
return
$"v
{
versionInfo
.
FileVersion
}
{
netVersion
}
"
;
return
$"v
{
versionInfo
.
FileVersion
}
{
netVersion
}
"
;
}
internal
static
string
GetCopyright
()
=>
...
...
src/Shared/HandyControlDemo_Shared/UserControl/Controls/CheckComboBoxDemoCtl.xaml
浏览文件 @
8e707a66
...
...
@@ -10,44 +10,44 @@
<hc:ScrollViewer IsInertiaEnabled="True">
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
<StackPanel>
<hc:CheckComboBox ShowClearButton="True" MaxWidth="380" ItemsSource="{Binding DataList}" ShowSelectAllButton="True"/>
<hc:CheckComboBox
hc:InfoElement.
ShowClearButton="True" MaxWidth="380" ItemsSource="{Binding DataList}" ShowSelectAllButton="True"/>
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}" Style="{StaticResource CheckComboBoxExtend}" Margin="0,16,0,0" IsEnabled="False" ShowSelectAllButton="True"/>
<hc:CheckComboBox ShowClearButton="True" MaxWidth="380" ItemsSource="{Binding DataList}" Style="{StaticResource CheckComboBoxExtend}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0" ShowSelectAllButton="True"/>
<hc:CheckComboBox
hc:InfoElement.
ShowClearButton="True" MaxWidth="380" ItemsSource="{Binding DataList}" Style="{StaticResource CheckComboBoxExtend}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0" ShowSelectAllButton="True"/>
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" Style="{StaticResource CheckComboBoxExtend}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
<hc:CheckComboBox ShowClearButton="True" Width="380" ItemsSource="{Binding DataList}" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource CheckComboBoxExtend}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0" ShowSelectAllButton="True"/>
<hc:CheckComboBox
hc:InfoElement.
ShowClearButton="True" Width="380" ItemsSource="{Binding DataList}" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource CheckComboBoxExtend}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0" ShowSelectAllButton="True"/>
<hc:CheckComboBox Width="380" ItemsSource="{Binding DataList}" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource CheckComboBoxExtend}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
</StackPanel>
<StackPanel>
<hc:CheckComboBox ShowClearButton="True" MaxWidth="380" ItemsSource="{Binding DataList}" Style="{StaticResource CheckComboBoxPlus}" ShowSelectAllButton="True"/>
<hc:CheckComboBox
hc:InfoElement.
ShowClearButton="True" MaxWidth="380" ItemsSource="{Binding DataList}" Style="{StaticResource CheckComboBoxPlus}" ShowSelectAllButton="True"/>
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}" Margin="0,16,0,0" IsEnabled="False" Style="{StaticResource CheckComboBoxPlus}"/>
<hc:CheckComboBox MaxWidth="380" ShowClearButton="True" ItemsSource="{Binding DataList}" Style="{StaticResource CheckComboBoxPlus}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0" ShowSelectAllButton="True"/>
<hc:CheckComboBox MaxWidth="380"
hc:InfoElement.
ShowClearButton="True" ItemsSource="{Binding DataList}" Style="{StaticResource CheckComboBoxPlus}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0" ShowSelectAllButton="True"/>
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" Style="{StaticResource CheckComboBoxPlus}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}" ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource CheckComboBoxPlus}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0" ShowSelectAllButton="True"/>
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}" ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource CheckComboBoxPlus}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}"
hc:InfoElement.
ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource CheckComboBoxPlus}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0" ShowSelectAllButton="True"/>
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}"
hc:InfoElement.
ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource CheckComboBoxPlus}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
</StackPanel>
<StackPanel>
<hc:CheckComboBox ShowClearButton="True" MaxWidth="380" ItemsSource="{Binding DataList}" ShowSelectAllButton="True" Style="{StaticResource CheckComboBox.Small}"/>
<hc:CheckComboBox
hc:InfoElement.
ShowClearButton="True" MaxWidth="380" ItemsSource="{Binding DataList}" ShowSelectAllButton="True" Style="{StaticResource CheckComboBox.Small}"/>
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}" Style="{StaticResource CheckComboBoxExtend.Small}" Margin="0,16,0,0" IsEnabled="False" ShowSelectAllButton="True"/>
<hc:CheckComboBox ShowClearButton="True" MaxWidth="380" ItemsSource="{Binding DataList}" Style="{StaticResource CheckComboBoxExtend.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0" ShowSelectAllButton="True"/>
<hc:CheckComboBox
hc:InfoElement.
ShowClearButton="True" MaxWidth="380" ItemsSource="{Binding DataList}" Style="{StaticResource CheckComboBoxExtend.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0" ShowSelectAllButton="True"/>
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" Style="{StaticResource CheckComboBoxExtend.Small}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
<hc:CheckComboBox ShowClearButton="True" Width="380" ItemsSource="{Binding DataList}" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource CheckComboBoxExtend.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0" ShowSelectAllButton="True"/>
<hc:CheckComboBox
hc:InfoElement.
ShowClearButton="True" Width="380" ItemsSource="{Binding DataList}" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource CheckComboBoxExtend.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0" ShowSelectAllButton="True"/>
<hc:CheckComboBox Width="380" ItemsSource="{Binding DataList}" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource CheckComboBoxExtend.Small}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
</StackPanel>
<StackPanel>
<hc:CheckComboBox ShowClearButton="True" MaxWidth="380" ItemsSource="{Binding DataList}" Style="{StaticResource CheckComboBoxPlus.Small}" ShowSelectAllButton="True"/>
<hc:CheckComboBox
hc:InfoElement.
ShowClearButton="True" MaxWidth="380" ItemsSource="{Binding DataList}" Style="{StaticResource CheckComboBoxPlus.Small}" ShowSelectAllButton="True"/>
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}" Margin="0,16,0,0" IsEnabled="False" Style="{StaticResource CheckComboBoxPlus.Small}"/>
<hc:CheckComboBox MaxWidth="380" ShowClearButton="True" ItemsSource="{Binding DataList}" Style="{StaticResource CheckComboBoxPlus.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0" ShowSelectAllButton="True"/>
<hc:CheckComboBox MaxWidth="380"
hc:InfoElement.
ShowClearButton="True" ItemsSource="{Binding DataList}" Style="{StaticResource CheckComboBoxPlus.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0" ShowSelectAllButton="True"/>
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" Style="{StaticResource CheckComboBoxPlus.Small}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}" ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource CheckComboBoxPlus.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0" ShowSelectAllButton="True"/>
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}" ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource CheckComboBoxPlus.Small}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}"
hc:InfoElement.
ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource CheckComboBoxPlus.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0" ShowSelectAllButton="True"/>
<hc:CheckComboBox MaxWidth="380" ItemsSource="{Binding DataList}"
hc:InfoElement.
ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource CheckComboBoxPlus.Small}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
</StackPanel>
</hc:UniformSpacingPanel>
</hc:ScrollViewer>
...
...
src/Shared/HandyControlDemo_Shared/UserControl/Controls/ComboBoxDemoCtl.xaml
浏览文件 @
8e707a66
...
...
@@ -10,34 +10,34 @@
<hc:ScrollViewer IsInertiaEnabled="True">
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
<StackPanel>
<hc:ComboBox ShowClearButton="True" ItemsSource="{Binding DataList}" SelectedIndex="0"/>
<hc:ComboBox
hc:InfoElement.
ShowClearButton="True" ItemsSource="{Binding DataList}" SelectedIndex="0"/>
<hc:ComboBox ItemsSource="{Binding DataList}" Margin="0,16,0,0" SelectedIndex="0" IsEnabled="False"/>
<hc:ComboBox ShowClearButton="True" ItemsSource="{Binding DataList}" SelectedIndex="0" Margin="0,16,0,0" IsEditable="True"/>
<hc:ComboBox
hc:InfoElement.
ShowClearButton="True" ItemsSource="{Binding DataList}" SelectedIndex="0" Margin="0,16,0,0" IsEditable="True"/>
<hc:ComboBox ItemsSource="{Binding DataList}" SelectedIndex="0" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0" Text="{ex:Lang Key={x:Static langs:LangKeys.ContentDemoStr}}"/>
<hc:ComboBox
ShowClearButton="True" ItemsSource="{Binding DataList}" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" hc:InfoElement.Necessary="True" Margin="0,32
,0,0"/>
<hc:ComboBox ItemsSource="{Binding DataList}"
IsEditable="True" SelectedIndex="0" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32
,0,0" Text="{ex:Lang Key={x:Static langs:LangKeys.ContentDemoStr}}"/>
<hc:ComboBox AutoComplete="True"
ShowClearButton="True" ItemsSource="{Binding DataList}" IsEditable="True" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" hc:InfoElement.Necessary="True" Margin="0,32
,0,0"/>
<hc:ComboBox
hc:InfoElement.ShowClearButton="True" ItemsSource="{Binding DataList}" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" hc:InfoElement.Necessary="True" Margin="0,16
,0,0"/>
<hc:ComboBox ItemsSource="{Binding DataList}"
hc:InfoElement.ShowClearButton="True" IsEditable="True" SelectedIndex="0" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,16
,0,0" Text="{ex:Lang Key={x:Static langs:LangKeys.ContentDemoStr}}"/>
<hc:ComboBox AutoComplete="True"
hc:InfoElement.ShowClearButton="True" ItemsSource="{Binding DataList}" IsEditable="True" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" hc:InfoElement.Necessary="True" Margin="0,16
,0,0"/>
<hc:ComboBox ItemsSource="{Binding DataList}" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0" Text="{ex:Lang Key={x:Static langs:LangKeys.ContentDemoStr}}"/>
<hc:ComboBox
ShowClearButton="True" ItemsSource="{Binding DataList}" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,32
,0,0"/>
<hc:ComboBox ItemsSource="{Binding DataList}"
IsEditable="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32
,0,0" Text="{ex:Lang Key={x:Static langs:LangKeys.ContentDemoStr}}"/>
<hc:ComboBox AutoComplete="True"
ShowClearButton="True" ItemsSource="{Binding DataList}" IsEditable="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,32
,0,0"/>
<hc:ComboBox
hc:InfoElement.ShowClearButton="True" ItemsSource="{Binding DataList}" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,16
,0,0"/>
<hc:ComboBox ItemsSource="{Binding DataList}"
hc:InfoElement.ShowClearButton="True" IsEditable="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,16
,0,0" Text="{ex:Lang Key={x:Static langs:LangKeys.ContentDemoStr}}"/>
<hc:ComboBox AutoComplete="True"
hc:InfoElement.ShowClearButton="True" ItemsSource="{Binding DataList}" IsEditable="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,16
,0,0"/>
</StackPanel>
<StackPanel>
<hc:ComboBox ShowClearButton="True" ItemsSource="{Binding DataList}" SelectedIndex="0" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox
hc:InfoElement.
ShowClearButton="True" ItemsSource="{Binding DataList}" SelectedIndex="0" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox ItemsSource="{Binding DataList}" Margin="0,16,0,0" SelectedIndex="0" IsEnabled="False" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox ShowClearButton="True" ItemsSource="{Binding DataList}" SelectedIndex="0" Margin="0,16,0,0" IsEditable="True" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox
hc:InfoElement.
ShowClearButton="True" ItemsSource="{Binding DataList}" SelectedIndex="0" Margin="0,16,0,0" IsEditable="True" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox ItemsSource="{Binding DataList}" SelectedIndex="0" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0" Text="{ex:Lang Key={x:Static langs:LangKeys.ContentDemoStr}}" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox
ShowClearButton="True" ItemsSource="{Binding DataList}" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" hc:InfoElement.Necessary="True" Margin="0,32
,0,0" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox ItemsSource="{Binding DataList}"
IsEditable="True" SelectedIndex="0" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32
,0,0" Text="{ex:Lang Key={x:Static langs:LangKeys.ContentDemoStr}}" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox AutoComplete="True"
ShowClearButton="True" ItemsSource="{Binding DataList}" IsEditable="True" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" hc:InfoElement.Necessary="True" Margin="0,32
,0,0" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox
hc:InfoElement.ShowClearButton="True" ItemsSource="{Binding DataList}" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" hc:InfoElement.Necessary="True" Margin="0,16
,0,0" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox ItemsSource="{Binding DataList}"
hc:InfoElement.ShowClearButton="True" IsEditable="True" SelectedIndex="0" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,16
,0,0" Text="{ex:Lang Key={x:Static langs:LangKeys.ContentDemoStr}}" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox AutoComplete="True"
hc:InfoElement.ShowClearButton="True" ItemsSource="{Binding DataList}" IsEditable="True" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" hc:InfoElement.Necessary="True" Margin="0,16
,0,0" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox ItemsSource="{Binding DataList}" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0" Text="{ex:Lang Key={x:Static langs:LangKeys.ContentDemoStr}}" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox
ShowClearButton="True" ItemsSource="{Binding DataList}" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,32
,0,0" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox ItemsSource="{Binding DataList}"
IsEditable="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32
,0,0" Text="{ex:Lang Key={x:Static langs:LangKeys.ContentDemoStr}}" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox AutoComplete="True"
ShowClearButton="True" ItemsSource="{Binding DataList}" IsEditable="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,32
,0,0" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox
hc:InfoElement.ShowClearButton="True" ItemsSource="{Binding DataList}" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,16
,0,0" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox ItemsSource="{Binding DataList}"
hc:InfoElement.ShowClearButton="True" IsEditable="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,16
,0,0" Text="{ex:Lang Key={x:Static langs:LangKeys.ContentDemoStr}}" Style="{StaticResource ComboBoxPlus.Small}"/>
<hc:ComboBox AutoComplete="True"
hc:InfoElement.ShowClearButton="True" ItemsSource="{Binding DataList}" IsEditable="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,16
,0,0" Style="{StaticResource ComboBoxPlus.Small}"/>
</StackPanel>
</hc:UniformSpacingPanel>
</hc:ScrollViewer>
...
...
src/Shared/HandyControlDemo_Shared/UserControl/Controls/DatePickerDemoCtl.xaml
浏览文件 @
8e707a66
...
...
@@ -10,23 +10,23 @@
<hc:ScrollViewer IsInertiaEnabled="True">
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
<StackPanel>
<hc:DatePicker ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}"/>
<hc:DatePicker
hc:InfoElement.
ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}"/>
<hc:DatePicker Margin="0,16,0,0" IsEnabled="False" SelectedDate="{x:Static system:DateTime.Now}"/>
<hc:DatePicker ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
<hc:DatePicker
hc:InfoElement.
ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
<hc:DatePicker SelectedDate="{x:Static system:DateTime.Now}" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
<hc:DatePicker ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
<hc:DatePicker
hc:InfoElement.
ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
<hc:DatePicker Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
</StackPanel>
<StackPanel>
<hc:DatePicker ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}" Style="{StaticResource DatePickerPlus.Small}"/>
<hc:DatePicker
hc:InfoElement.
ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}" Style="{StaticResource DatePickerPlus.Small}"/>
<hc:DatePicker Margin="0,16,0,0" IsEnabled="False" SelectedDate="{x:Static system:DateTime.Now}" Style="{StaticResource DatePickerPlus.Small}"/>
<hc:DatePicker ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0" Style="{StaticResource DatePickerPlus.Small}"/>
<hc:DatePicker
hc:InfoElement.
ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0" Style="{StaticResource DatePickerPlus.Small}"/>
<hc:DatePicker SelectedDate="{x:Static system:DateTime.Now}" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" hc:InfoElement.Necessary="True" Margin="0,16,0,0" Style="{StaticResource DatePickerPlus.Small}"/>
<hc:DatePicker ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0" Style="{StaticResource DatePickerPlus.Small}"/>
<hc:DatePicker
hc:InfoElement.
ShowClearButton="True" SelectedDate="{x:Static system:DateTime.Now}" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0" Style="{StaticResource DatePickerPlus.Small}"/>
<hc:DatePicker Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,16,0,0" Style="{StaticResource DatePickerPlus.Small}"/>
</StackPanel>
</hc:UniformSpacingPanel>
...
...
src/Shared/HandyControlDemo_Shared/UserControl/Controls/DateTimePickerDemoCtl.xaml
浏览文件 @
8e707a66
...
...
@@ -9,43 +9,43 @@
<hc:ScrollViewer IsInertiaEnabled="True">
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
<StackPanel>
<hc:DateTimePicker ShowClearButton="True"/>
<hc:DateTimePicker
hc:InfoElement.
ShowClearButton="True"/>
<hc:DateTimePicker Margin="0,16,0,0" IsEnabled="False"/>
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
<hc:DateTimePicker
hc:InfoElement.
ShowClearButton="True" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
<hc:DateTimePicker hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
<hc:DateTimePicker ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
<hc:DateTimePicker
hc:InfoElement.
ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
<hc:DateTimePicker Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
</StackPanel>
<StackPanel>
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePickerPlus}"/>
<hc:DateTimePicker
hc:InfoElement.
ShowClearButton="True" Style="{StaticResource DateTimePickerPlus}"/>
<hc:DateTimePicker Margin="0,16,0,0" IsEnabled="False" Style="{StaticResource DateTimePickerPlus}"/>
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePickerPlus}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
<hc:DateTimePicker
hc:InfoElement.
ShowClearButton="True" Style="{StaticResource DateTimePickerPlus}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
<hc:DateTimePicker hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" Style="{StaticResource DateTimePickerPlus}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
<hc:DateTimePicker ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource DateTimePickerPlus}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
<hc:DateTimePicker
hc:InfoElement.
ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource DateTimePickerPlus}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
<hc:DateTimePicker Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource DateTimePickerPlus}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
</StackPanel>
<StackPanel>
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePicker.Small}"/>
<hc:DateTimePicker
hc:InfoElement.
ShowClearButton="True" Style="{StaticResource DateTimePicker.Small}"/>
<hc:DateTimePicker Margin="0,16,0,0" IsEnabled="False" Style="{StaticResource DateTimePicker.Small}"/>
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePickerExtend.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
<hc:DateTimePicker
hc:InfoElement.
ShowClearButton="True" Style="{StaticResource DateTimePickerExtend.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
<hc:DateTimePicker hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" Style="{StaticResource DateTimePickerExtend.Small}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
<hc:DateTimePicker ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource DateTimePickerExtend.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
<hc:DateTimePicker
hc:InfoElement.
ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource DateTimePickerExtend.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
<hc:DateTimePicker Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource DateTimePickerExtend.Small}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
</StackPanel>
<StackPanel>
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePickerPlus.Small}"/>
<hc:DateTimePicker
hc:InfoElement.
ShowClearButton="True" Style="{StaticResource DateTimePickerPlus.Small}"/>
<hc:DateTimePicker Margin="0,16,0,0" IsEnabled="False" Style="{StaticResource DateTimePickerPlus.Small}"/>
<hc:DateTimePicker ShowClearButton="True" Style="{StaticResource DateTimePickerPlus.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
<hc:DateTimePicker
hc:InfoElement.
ShowClearButton="True" Style="{StaticResource DateTimePickerPlus.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
<hc:DateTimePicker hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" Style="{StaticResource DateTimePickerPlus.Small}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
<hc:DateTimePicker ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource DateTimePickerPlus.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
<hc:DateTimePicker
hc:InfoElement.
ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource DateTimePickerPlus.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
<hc:DateTimePicker Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource DateTimePickerPlus.Small}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
</StackPanel>
</hc:UniformSpacingPanel>
...
...
src/Shared/HandyControlDemo_Shared/UserControl/Controls/NumericUpDownDemoCtl.xaml
浏览文件 @
8e707a66
...
...
@@ -10,17 +10,17 @@
<hc:TransitioningContentControl>
<hc:ScrollViewer IsInertiaEnabled="True">
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
<
StackPanel
>
<
hc:UniformSpacingPanel Spacing="16" Orientation="Vertical"
>
<hc:NumericUpDown Maximum="100"/>
<hc:NumericUpDown
Margin="0,32,0,0"
IsEnabled="False"/>
<hc:NumericUpDown
Margin="0,32,0,0"
IsReadOnly="True"/>
<hc:NumericUpDown IsEnabled="False"/>
<hc:NumericUpDown IsReadOnly="True"/>
<hc:NumericUpDown hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Margin="0,32,0,0"
Style="{StaticResource NumericUpDownExtend}"/>
<hc:NumericUpDown hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Margin="0,32,0,0"
hc:InfoElement.Necessary="True" Style="{StaticResource NumericUpDownExtend}"/>
<hc:NumericUpDown Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource NumericUpDownExtend}"
Margin="0,32,0,0"
/>
<hc:NumericUpDown ValueFormat="N2" Maximum="100000" Value="10000" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource NumericUpDownExtend}" hc:InfoElement.Necessary="True"
Margin="0,32,0,0"
/>
</
Stack
Panel>
<
StackPanel
>
<hc:NumericUpDown hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Style="{StaticResource NumericUpDownExtend}"/>
<hc:NumericUpDown hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" hc:InfoElement.Necessary="True" Style="{StaticResource NumericUpDownExtend}"/>
<hc:NumericUpDown Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource NumericUpDownExtend}"/>
<hc:NumericUpDown ValueFormat="N2" Maximum="100000" Value="10000" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource NumericUpDownExtend}" hc:InfoElement.Necessary="True"/>
</
hc:UniformSpacing
Panel>
<
hc:UniformSpacingPanel Spacing="16" Orientation="Vertical"
>
<hc:NumericUpDown hc:InfoElement.ShowClearButton="True" Style="{StaticResource NumericUpDownPlus}">
<hc:NumericUpDown.Value>
<Binding Path="DoubleValue1" UpdateSourceTrigger="PropertyChanged">
...
...
@@ -30,25 +30,25 @@
</Binding>
</hc:NumericUpDown.Value>
</hc:NumericUpDown>
<hc:NumericUpDown
Margin="0,32,0,0"
IsEnabled="False" Style="{StaticResource NumericUpDownPlus}"/>
<hc:NumericUpDown
Margin="0,32,0,0"
IsReadOnly="True" Style="{StaticResource NumericUpDownPlus}"/>
<hc:NumericUpDown IsEnabled="False" Style="{StaticResource NumericUpDownPlus}"/>
<hc:NumericUpDown IsReadOnly="True" Style="{StaticResource NumericUpDownPlus}"/>
<hc:NumericUpDown hc:InfoElement.ShowClearButton="True" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Margin="0,32,0,0"
Style="{StaticResource NumericUpDownPlus}"/>
<hc:NumericUpDown hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Margin="0,32,0,0"
hc:InfoElement.Necessary="True" Style="{StaticResource NumericUpDownPlus}"/>
<hc:NumericUpDown Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource NumericUpDownPlus}"
Margin="0,32,0,0"
/>
<hc:NumericUpDown DecimalPlaces="2" hc:InfoElement.ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource NumericUpDownPlus}" hc:InfoElement.Necessary="True"
Margin="0,32,0,0"
/>
</
Stack
Panel>
<
StackPanel
>
<hc:NumericUpDown hc:InfoElement.ShowClearButton="True" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Style="{StaticResource NumericUpDownPlus}"/>
<hc:NumericUpDown hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" hc:InfoElement.Necessary="True" Style="{StaticResource NumericUpDownPlus}"/>
<hc:NumericUpDown Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource NumericUpDownPlus}"/>
<hc:NumericUpDown DecimalPlaces="2" hc:InfoElement.ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource NumericUpDownPlus}" hc:InfoElement.Necessary="True"/>
</
hc:UniformSpacing
Panel>
<
hc:UniformSpacingPanel Spacing="16" Orientation="Vertical"
>
<hc:NumericUpDown Maximum="100" Style="{StaticResource NumericUpDown.Small}"/>
<hc:NumericUpDown
Margin="0,32,0,0"
IsEnabled="False" Style="{StaticResource NumericUpDown.Small}"/>
<hc:NumericUpDown
Margin="0,32,0,0"
IsReadOnly="True" Style="{StaticResource NumericUpDown.Small}"/>
<hc:NumericUpDown IsEnabled="False" Style="{StaticResource NumericUpDown.Small}"/>
<hc:NumericUpDown IsReadOnly="True" Style="{StaticResource NumericUpDown.Small}"/>
<hc:NumericUpDown hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Margin="0,32,0,0"
Style="{StaticResource NumericUpDownExtend.Small}"/>
<hc:NumericUpDown hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Margin="0,32,0,0"
hc:InfoElement.Necessary="True" Style="{StaticResource NumericUpDownExtend.Small}"/>
<hc:NumericUpDown Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource NumericUpDownExtend.Small}"
Margin="0,32,0,0"
/>
<hc:NumericUpDown ValueFormat="N2" Maximum="100000" Value="10000" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource NumericUpDownExtend.Small}" hc:InfoElement.Necessary="True"
Margin="0,32,0,0"
/>
</
Stack
Panel>
<
StackPanel
>
<hc:NumericUpDown hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Style="{StaticResource NumericUpDownExtend.Small}"/>
<hc:NumericUpDown hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" hc:InfoElement.Necessary="True" Style="{StaticResource NumericUpDownExtend.Small}"/>
<hc:NumericUpDown Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource NumericUpDownExtend.Small}"/>
<hc:NumericUpDown ValueFormat="N2" Maximum="100000" Value="10000" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource NumericUpDownExtend.Small}" hc:InfoElement.Necessary="True"/>
</
hc:UniformSpacing
Panel>
<
hc:UniformSpacingPanel Spacing="16" Orientation="Vertical"
>
<hc:NumericUpDown hc:InfoElement.ShowClearButton="True" Style="{StaticResource NumericUpDownPlus.Small}">
<hc:NumericUpDown.Value>
<Binding Path="DoubleValue2" UpdateSourceTrigger="PropertyChanged">
...
...
@@ -58,14 +58,14 @@
</Binding>
</hc:NumericUpDown.Value>
</hc:NumericUpDown>
<hc:NumericUpDown
Margin="0,32,0,0"
IsEnabled="False" Style="{StaticResource NumericUpDownPlus.Small}"/>
<hc:NumericUpDown
Margin="0,32,0,0"
IsReadOnly="True" Style="{StaticResource NumericUpDownPlus.Small}"/>
<hc:NumericUpDown IsEnabled="False" Style="{StaticResource NumericUpDownPlus.Small}"/>
<hc:NumericUpDown IsReadOnly="True" Style="{StaticResource NumericUpDownPlus.Small}"/>
<hc:NumericUpDown hc:InfoElement.ShowClearButton="True" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Margin="0,32,0,0"
Style="{StaticResource NumericUpDownPlus.Small}"/>
<hc:NumericUpDown hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Margin="0,32,0,0"
hc:InfoElement.Necessary="True" Style="{StaticResource NumericUpDownPlus.Small}"/>
<hc:NumericUpDown Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource NumericUpDownPlus.Small}"
Margin="0,32,0,0"
/>
<hc:NumericUpDown DecimalPlaces="2" hc:InfoElement.ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource NumericUpDownPlus.Small}" hc:InfoElement.Necessary="True"
Margin="0,32,0,0"
/>
</
Stack
Panel>
<hc:NumericUpDown hc:InfoElement.ShowClearButton="True" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Style="{StaticResource NumericUpDownPlus.Small}"/>
<hc:NumericUpDown hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" hc:InfoElement.Necessary="True" Style="{StaticResource NumericUpDownPlus.Small}"/>
<hc:NumericUpDown Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource NumericUpDownPlus.Small}"/>
<hc:NumericUpDown DecimalPlaces="2" hc:InfoElement.ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource NumericUpDownPlus.Small}" hc:InfoElement.Necessary="True"/>
</
hc:UniformSpacing
Panel>
</hc:UniformSpacingPanel>
</hc:ScrollViewer>
</hc:TransitioningContentControl>
...
...
src/Shared/HandyControlDemo_Shared/UserControl/Controls/PasswordBoxDemoCtl.xaml
浏览文件 @
8e707a66
...
...
@@ -9,26 +9,26 @@
<hc:ScrollViewer IsInertiaEnabled="True">
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
<StackPanel>
<hc:PasswordBox Name="PasswordBoxDemo" ShowClearButton="True" Password="123456" IsSafeEnabled="False"/>
<hc:PasswordBox Name="PasswordBoxDemo"
hc:InfoElement.
ShowClearButton="True" Password="123456" IsSafeEnabled="False"/>
<TextBox Text="{Binding UnsafePassword,ElementName=PasswordBoxDemo,UpdateSourceTrigger=PropertyChanged}" Margin="0,6,0,0"/>
<hc:PasswordBox Password="123456" Margin="0,16,0,0"/>
<hc:PasswordBox ShowClearButton="True" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Password="123456" Margin="0,32,0,0"/>
<hc:PasswordBox
hc:InfoElement.
ShowClearButton="True" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Password="123456" Margin="0,32,0,0"/>
<hc:PasswordBox ShowEyeButton="True" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" hc:InfoElement.Necessary="True" Margin="0,32,0,0"/>
<hc:PasswordBox ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0" Password="123456"/>
<hc:PasswordBox ShowClearButton="True" ShowEyeButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,32,0,0"/>
<hc:PasswordBox
hc:InfoElement.
ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0" Password="123456"/>
<hc:PasswordBox
hc:InfoElement.
ShowClearButton="True" ShowEyeButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,32,0,0"/>
</StackPanel>
<StackPanel>
<hc:PasswordBox Name="PasswordBoxDemoSmall" ShowClearButton="True" Password="123456" IsSafeEnabled="False" Style="{StaticResource PasswordBoxPlus.Small}"/>
<hc:PasswordBox Name="PasswordBoxDemoSmall"
hc:InfoElement.
ShowClearButton="True" Password="123456" IsSafeEnabled="False" Style="{StaticResource PasswordBoxPlus.Small}"/>
<TextBox Text="{Binding UnsafePassword,ElementName=PasswordBoxDemoSmall,UpdateSourceTrigger=PropertyChanged}" Margin="0,6,0,0"/>
<hc:PasswordBox Password="123456" Margin="0,16,0,0" Style="{StaticResource PasswordBoxPlus.Small}"/>
<hc:PasswordBox ShowClearButton="True" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Password="123456" Margin="0,32,0,0" Style="{StaticResource PasswordBoxPlus.Small}"/>
<hc:PasswordBox
hc:InfoElement.
ShowClearButton="True" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Password="123456" Margin="0,32,0,0" Style="{StaticResource PasswordBoxPlus.Small}"/>
<hc:PasswordBox ShowEyeButton="True" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" hc:InfoElement.Necessary="True" Margin="0,32,0,0" Style="{StaticResource PasswordBoxPlus.Small}"/>
<hc:PasswordBox ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0" Password="123456" Style="{StaticResource PasswordBoxPlus.Small}"/>
<hc:PasswordBox ShowClearButton="True" ShowEyeButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,32,0,0" Style="{StaticResource PasswordBoxPlus.Small}"/>
<hc:PasswordBox
hc:InfoElement.
ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0" Password="123456" Style="{StaticResource PasswordBoxPlus.Small}"/>
<hc:PasswordBox
hc:InfoElement.
ShowClearButton="True" ShowEyeButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" hc:InfoElement.Necessary="True" Margin="0,32,0,0" Style="{StaticResource PasswordBoxPlus.Small}"/>
</StackPanel>
</hc:UniformSpacingPanel>
</hc:ScrollViewer>
...
...
src/Shared/HandyControlDemo_Shared/UserControl/Controls/SearchBarDemoCtl.xaml
浏览文件 @
8e707a66
...
...
@@ -9,58 +9,58 @@
<hc:TransitioningContentControl>
<hc:ScrollViewer IsInertiaEnabled="True">
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
<
StackPanel
>
<hc:SearchBar Command="{Binding SearchCmd}" CommandParameter="{Binding Text,RelativeSource={RelativeSource Self}}"/>
<hc:SearchBar
Margin="0,32,0,0" IsEnabled="False"
/>
<
hc:UniformSpacingPanel Spacing="16" Orientation="Vertical"
>
<hc:SearchBar Command="{Binding SearchCmd}" CommandParameter="{Binding Text,RelativeSource={RelativeSource Self}}"
/>
<hc:SearchBar
IsEnabled="False"
/>
<hc:SearchBar hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Margin="0,32,0,0" Style="{StaticResource SearchBarExtend}"
/>
<hc:SearchBar hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Margin="0,32,0,0" hc:InfoElement.Necessary="True" Style="{StaticResource SearchBarExtend}"
/>
<hc:SearchBar Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource SearchBarExtend}"
Margin="0,32,0,0"
/>
<hc:SearchBar Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource SearchBarExtend}" hc:InfoElement.Necessary="True"
Margin="0,32,0,0"
/>
</
Stack
Panel>
<
StackPanel
>
<hc:SearchBar hc:InfoElement.ShowClearButton="True" Style="{StaticResource SearchBarPlus}"/>
<hc:SearchBar
Margin="0,32,0,0" IsEnabled="False" Style="{StaticResource SearchBarPlus}"
/>
<hc:SearchBar hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Style="{StaticResource SearchBarExtend}"
/>
<hc:SearchBar hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
hc:InfoElement.Necessary="True" Style="{StaticResource SearchBarExtend}"
/>
<hc:SearchBar Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource SearchBarExtend}" />
<hc:SearchBar Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource SearchBarExtend}" hc:InfoElement.Necessary="True" />
</
hc:UniformSpacing
Panel>
<
hc:UniformSpacingPanel Spacing="16" Orientation="Vertical"
>
<hc:SearchBar hc:InfoElement.ShowClearButton="True" Style="{StaticResource SearchBarPlus}"
/>
<hc:SearchBar
IsEnabled="False" Style="{StaticResource SearchBarPlus}"
/>
<hc:SearchBar hc:InfoElement.ShowClearButton="True" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Margin="0,32,0,0" Style="{StaticResource SearchBarPlus}"
/>
<hc:SearchBar hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterEmail}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Margin="0,32,0,0"
hc:InfoElement.Necessary="True" Style="{StaticResource SearchBarPlus}">
<hc:SearchBar hc:InfoElement.ShowClearButton="True" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Style="{StaticResource SearchBarPlus}"
/>
<hc:SearchBar hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterEmail}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" hc:InfoElement.Necessary="True" Style="{StaticResource SearchBarPlus}">
<hc:SearchBar.Text>
<Binding Path="Email1" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<hc:RegexRule Type="Mail"/>
<hc:RegexRule Type="Mail"
/>
</Binding.ValidationRules>
</Binding>
</hc:SearchBar.Text>
</hc:SearchBar>
<hc:SearchBar Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource SearchBarPlus}"
Margin="0,32,0,0"
/>
<hc:SearchBar hc:InfoElement.ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource SearchBarPlus}" hc:InfoElement.Necessary="True"
Margin="0,32,0,0"
/>
</
Stack
Panel>
<
StackPanel
>
<hc:SearchBar Command="{Binding SearchCmd}" CommandParameter="{Binding Text,RelativeSource={RelativeSource Self}}" Style="{StaticResource SearchBar.Small}"/>
<hc:SearchBar
Margin="0,32,0,0" IsEnabled="False" Style="{StaticResource SearchBar.Small}"
/>
<hc:SearchBar Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource SearchBarPlus}" />
<hc:SearchBar hc:InfoElement.ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource SearchBarPlus}" hc:InfoElement.Necessary="True" />
</
hc:UniformSpacing
Panel>
<
hc:UniformSpacingPanel Spacing="16" Orientation="Vertical"
>
<hc:SearchBar Command="{Binding SearchCmd}" CommandParameter="{Binding Text,RelativeSource={RelativeSource Self}}" Style="{StaticResource SearchBar.Small}"
/>
<hc:SearchBar
IsEnabled="False" Style="{StaticResource SearchBar.Small}"
/>
<hc:SearchBar hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Margin="0,32,0,0" Style="{StaticResource SearchBarExtend.Small}"
/>
<hc:SearchBar hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Margin="0,32,0,0" hc:InfoElement.Necessary="True" Style="{StaticResource SearchBarExtend.Small}"
/>
<hc:SearchBar Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource SearchBarExtend.Small}"
Margin="0,32,0,0"
/>
<hc:SearchBar Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource SearchBarExtend.Small}" hc:InfoElement.Necessary="True"
Margin="0,32,0,0"
/>
</
Stack
Panel>
<
StackPanel
>
<hc:SearchBar hc:InfoElement.ShowClearButton="True" Style="{StaticResource SearchBarPlus.Small}"/>
<hc:SearchBar
Margin="0,32,0,0" IsEnabled="False" Style="{StaticResource SearchBarPlus.Small}"
/>
<hc:SearchBar hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Style="{StaticResource SearchBarExtend.Small}"
/>
<hc:SearchBar hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
hc:InfoElement.Necessary="True" Style="{StaticResource SearchBarExtend.Small}"
/>
<hc:SearchBar Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource SearchBarExtend.Small}" />
<hc:SearchBar Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource SearchBarExtend.Small}" hc:InfoElement.Necessary="True" />
</
hc:UniformSpacing
Panel>
<
hc:UniformSpacingPanel Spacing="16" Orientation="Vertical"
>
<hc:SearchBar hc:InfoElement.ShowClearButton="True" Style="{StaticResource SearchBarPlus.Small}"
/>
<hc:SearchBar
IsEnabled="False" Style="{StaticResource SearchBarPlus.Small}"
/>
<hc:SearchBar hc:InfoElement.ShowClearButton="True" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Margin="0,32,0,0" Style="{StaticResource SearchBarPlus.Small}"
/>
<hc:SearchBar hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterEmail}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Margin="0,32,0,0"
hc:InfoElement.Necessary="True" Style="{StaticResource SearchBarPlus.Small}">
<hc:SearchBar hc:InfoElement.ShowClearButton="True" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}"
Style="{StaticResource SearchBarPlus.Small}"
/>
<hc:SearchBar hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterEmail}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" hc:InfoElement.Necessary="True" Style="{StaticResource SearchBarPlus.Small}">
<hc:SearchBar.Text>
<Binding Path="Email1" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<hc:RegexRule Type="Mail"/>
<hc:RegexRule Type="Mail"
/>
</Binding.ValidationRules>
</Binding>
</hc:SearchBar.Text>
</hc:SearchBar>
<hc:SearchBar Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource SearchBarPlus.Small}"
Margin="0,32,0,0"
/>
<hc:SearchBar hc:InfoElement.ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource SearchBarPlus.Small}" hc:InfoElement.Necessary="True"
Margin="0,32,0,0"
/>
</
Stack
Panel>
<hc:SearchBar Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource SearchBarPlus.Small}" />
<hc:SearchBar hc:InfoElement.ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource SearchBarPlus.Small}" hc:InfoElement.Necessary="True" />
</
hc:UniformSpacing
Panel>
</hc:UniformSpacingPanel>
</hc:ScrollViewer>
</hc:TransitioningContentControl>
...
...
src/Shared/HandyControlDemo_Shared/UserControl/Controls/TimePickerDemoCtl.xaml
浏览文件 @
8e707a66
...
...
@@ -9,31 +9,31 @@
<hc:ScrollViewer IsInertiaEnabled="True">
<hc:UniformSpacingPanel Spacing="32" Margin="32" ChildWrapping="Wrap">
<StackPanel>
<hc:TimePicker ShowClearButton="True"/>
<hc:TimePicker
hc:InfoElement.
ShowClearButton="True"/>
<hc:TimePicker Margin="0,16,0,0" IsEnabled="False"/>
<hc:TimePicker ShowClearButton="True" Style="{StaticResource TimePickerExtend}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
<hc:TimePicker
hc:InfoElement.
ShowClearButton="True" Style="{StaticResource TimePickerExtend}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
<hc:TimePicker hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" Style="{StaticResource TimePickerExtend}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
<hc:TimePicker ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource TimePickerExtend}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
<hc:TimePicker
hc:InfoElement.
ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource TimePickerExtend}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
<hc:TimePicker Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource TimePickerExtend}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
</StackPanel>
<StackPanel
Margin="32,0,0,0"
>
<hc:TimePicker ShowClearButton="True" Style="{StaticResource TimePickerPlus}">
<StackPanel>
<hc:TimePicker
hc:InfoElement.
ShowClearButton="True" Style="{StaticResource TimePickerPlus}">
<hc:TimePicker.Clock>
<hc:ListClock/>
</hc:TimePicker.Clock>
</hc:TimePicker>
<hc:TimePicker Margin="0,16,0,0" IsEnabled="False" Style="{StaticResource TimePickerPlus}"/>
<hc:TimePicker ShowClearButton="True" Style="{StaticResource TimePickerPlus}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
<hc:TimePicker
hc:InfoElement.
ShowClearButton="True" Style="{StaticResource TimePickerPlus}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0"/>
<hc:TimePicker hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr2}}" Style="{StaticResource TimePickerPlus}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
<hc:TimePicker ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource TimePickerPlus}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
<hc:TimePicker
hc:InfoElement.
ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource TimePickerPlus}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0"/>
<hc:TimePicker Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Placeholder="{ex:Lang Key={x:Static langs:LangKeys.PlsEnterContent}}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Style="{StaticResource TimePickerPlus}" hc:InfoElement.Necessary="True" Margin="0,16,0,0"/>
</StackPanel>
<StackPanel>
<hc:TimePicker ShowClearButton="True" Style="{StaticResource TimePicker.Small}">
<hc:TimePicker
hc:InfoElement.
ShowClearButton="True" Style="{StaticResource TimePicker.Small}">
<hc:TimePicker.Clock>
<hc:ListClock/>
</hc:TimePicker.Clock>
...
...
@@ -44,7 +44,7 @@
</hc:TimePicker.Clock>
</hc:TimePicker>
<hc:TimePicker ShowClearButton="True" Style="{StaticResource TimePickerExtend.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0">
<hc:TimePicker
hc:InfoElement.
ShowClearButton="True" Style="{StaticResource TimePickerExtend.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0">
<hc:TimePicker.Clock>
<hc:ListClock />
</hc:TimePicker.Clock>
...
...
@@ -55,7 +55,7 @@
</hc:TimePicker.Clock>
</hc:TimePicker>
<hc:TimePicker ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource TimePickerExtend.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0">
<hc:TimePicker
hc:InfoElement.
ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource TimePickerExtend.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0">
<hc:TimePicker.Clock>
<hc:ListClock />
</hc:TimePicker.Clock>
...
...
@@ -66,19 +66,19 @@
</hc:TimePicker.Clock>
</hc:TimePicker>
</StackPanel>
<StackPanel
Margin="32,0,0,0"
>
<hc:TimePicker ShowClearButton="True" Style="{StaticResource TimePickerPlus.Small}">
<StackPanel>
<hc:TimePicker
hc:InfoElement.
ShowClearButton="True" Style="{StaticResource TimePickerPlus.Small}">
<hc:TimePicker.Clock>
<hc:ListClock/>
</hc:TimePicker.Clock>
</hc:TimePicker>
<hc:TimePicker ShowClearButton="True" Margin="0,16,0,0" Style="{StaticResource TimePickerPlus.Small}">
<hc:TimePicker
hc:InfoElement.
ShowClearButton="True" Margin="0,16,0,0" Style="{StaticResource TimePickerPlus.Small}">
<hc:TimePicker.Clock>
<hc:ListClock />
</hc:TimePicker.Clock>
</hc:TimePicker>
<hc:TimePicker ShowClearButton="True" Style="{StaticResource TimePickerPlus.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0">
<hc:TimePicker
hc:InfoElement.
ShowClearButton="True" Style="{StaticResource TimePickerPlus.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr1}}" Margin="0,32,0,0">
<hc:TimePicker.Clock>
<hc:ListClock />
</hc:TimePicker.Clock>
...
...
@@ -89,7 +89,7 @@
</hc:TimePicker.Clock>
</hc:TimePicker>
<hc:TimePicker ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource TimePickerPlus.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0">
<hc:TimePicker
hc:InfoElement.
ShowClearButton="True" Width="380" hc:InfoElement.TitleWidth="140" hc:InfoElement.TitlePlacement="Left" Style="{StaticResource TimePickerPlus.Small}" hc:InfoElement.Title="{ex:Lang Key={x:Static langs:LangKeys.TitleDemoStr3}}" Margin="0,32,0,0">
<hc:TimePicker.Clock>
<hc:ListClock />
</hc:TimePicker.Clock>
...
...
src/Shared/HandyControl_Shared/Controls/Attach/InfoElement.cs
浏览文件 @
8e707a66
...
...
@@ -39,7 +39,7 @@ public class InfoElement : TitleElement
/// 内容高度
/// </summary>
public
static
readonly
DependencyProperty
ContentHeightProperty
=
DependencyProperty
.
RegisterAttached
(
"ContentHeight"
,
typeof
(
double
),
typeof
(
InfoElement
),
new
FrameworkPropertyMetadata
(
30
.0
,
FrameworkPropertyMetadataOptions
.
Inherits
));
"ContentHeight"
,
typeof
(
double
),
typeof
(
InfoElement
),
new
FrameworkPropertyMetadata
(
28
.0
,
FrameworkPropertyMetadataOptions
.
Inherits
));
public
static
void
SetContentHeight
(
DependencyObject
element
,
double
value
)
=>
element
.
SetValue
(
ContentHeightProperty
,
value
);
...
...
@@ -49,7 +49,7 @@ public class InfoElement : TitleElement
/// 最小内容高度
/// </summary>
public
static
readonly
DependencyProperty
MinContentHeightProperty
=
DependencyProperty
.
RegisterAttached
(
"MinContentHeight"
,
typeof
(
double
),
typeof
(
InfoElement
),
new
PropertyMetadata
(
30
.0
));
"MinContentHeight"
,
typeof
(
double
),
typeof
(
InfoElement
),
new
PropertyMetadata
(
28
.0
));
public
static
void
SetMinContentHeight
(
DependencyObject
element
,
double
value
)
=>
element
.
SetValue
(
MinContentHeightProperty
,
value
);
...
...
src/Shared/HandyControl_Shared/Controls/Attach/TitleElement.cs
浏览文件 @
8e707a66
...
...
@@ -85,6 +85,15 @@ public class TitleElement
public
static
Thickness
GetMarginOnTheLeft
(
DependencyObject
element
)
=>
(
Thickness
)
element
.
GetValue
(
MarginOnTheLeftProperty
);
public
static
readonly
DependencyProperty
MarginOnTheTopProperty
=
DependencyProperty
.
RegisterAttached
(
"MarginOnTheTop"
,
typeof
(
Thickness
),
typeof
(
TitleElement
),
new
FrameworkPropertyMetadata
(
default
(
Thickness
),
FrameworkPropertyMetadataOptions
.
Inherits
));
public
static
void
SetMarginOnTheTop
(
DependencyObject
element
,
Thickness
value
)
=>
element
.
SetValue
(
MarginOnTheTopProperty
,
value
);
public
static
Thickness
GetMarginOnTheTop
(
DependencyObject
element
)
=>
(
Thickness
)
element
.
GetValue
(
MarginOnTheTopProperty
);
public
static
readonly
DependencyProperty
PaddingProperty
=
DependencyProperty
.
RegisterAttached
(
"Padding"
,
typeof
(
Thickness
),
typeof
(
TitleElement
),
new
FrameworkPropertyMetadata
(
default
(
Thickness
),
FrameworkPropertyMetadataOptions
.
Inherits
));
...
...
src/Shared/HandyControl_Shared/Controls/Block/ToggleBlock.cs
浏览文件 @
8e707a66
using
System.ComponentModel
;
using
System.Windows
;
using
System.Windows.Controls
;
using
System.Windows.Input
;
using
System.Windows.Markup
;
using
HandyControl.Data
;
using
HandyControl.Interactivity
;
namespace
HandyControl.Controls
;
...
...
@@ -10,9 +13,13 @@ namespace HandyControl.Controls;
/// </summary>
public
class
ToggleBlock
:
Control
{
public
static
readonly
DependencyProperty
IsCheckedProperty
=
DependencyProperty
.
Register
(
nameof
(
IsChecked
),
typeof
(
bool
?),
typeof
(
ToggleBlock
),
new
FrameworkPropertyMetadata
(
ValueBoxes
.
FalseBox
,
FrameworkPropertyMetadataOptions
.
BindsTwoWayByDefault
|
FrameworkPropertyMetadataOptions
.
Journal
));
public
static
readonly
DependencyProperty
IsCheckedProperty
=
DependencyProperty
.
Register
(
nameof
(
IsChecked
),
typeof
(
bool
?),
typeof
(
ToggleBlock
),
new
FrameworkPropertyMetadata
(
ValueBoxes
.
FalseBox
,
FrameworkPropertyMetadataOptions
.
BindsTwoWayByDefault
|
FrameworkPropertyMetadataOptions
.
Journal
));
public
static
readonly
DependencyProperty
CheckedContentProperty
=
DependencyProperty
.
Register
(
nameof
(
CheckedContent
),
typeof
(
object
),
typeof
(
ToggleBlock
),
new
PropertyMetadata
(
default
(
object
)));
public
static
readonly
DependencyProperty
UnCheckedContentProperty
=
DependencyProperty
.
Register
(
nameof
(
UnCheckedContent
),
typeof
(
object
),
typeof
(
ToggleBlock
),
new
PropertyMetadata
(
default
(
object
)));
public
static
readonly
DependencyProperty
IndeterminateContentProperty
=
DependencyProperty
.
Register
(
nameof
(
IndeterminateContent
),
typeof
(
object
),
typeof
(
ToggleBlock
),
new
PropertyMetadata
(
default
(
object
)));
public
static
readonly
DependencyProperty
ToggleGestureProperty
=
DependencyProperty
.
Register
(
nameof
(
ToggleGesture
),
typeof
(
MouseGesture
),
typeof
(
ToggleBlock
),
new
UIPropertyMetadata
(
new
MouseGesture
(
MouseAction
.
None
),
OnToggleGestureChanged
));
private
MouseBinding
_toggleBinding
;
[
Category
(
"Appearance"
)]
[
TypeConverter
(
typeof
(
NullableBoolConverter
))]
...
...
@@ -29,30 +36,52 @@ public class ToggleBlock : Control
set
=>
SetValue
(
IsCheckedProperty
,
value
.
HasValue
?
ValueBoxes
.
BooleanBox
(
value
.
Value
)
:
null
);
}
public
static
readonly
DependencyProperty
CheckedContentProperty
=
DependencyProperty
.
Register
(
nameof
(
CheckedContent
),
typeof
(
object
),
typeof
(
ToggleBlock
),
new
PropertyMetadata
(
default
(
object
)));
public
object
CheckedContent
{
get
=>
GetValue
(
CheckedContentProperty
);
set
=>
SetValue
(
CheckedContentProperty
,
value
);
}
public
static
readonly
DependencyProperty
UnCheckedContentProperty
=
DependencyProperty
.
Register
(
nameof
(
UnCheckedContent
),
typeof
(
object
),
typeof
(
ToggleBlock
),
new
PropertyMetadata
(
default
(
object
)));
public
object
UnCheckedContent
{
get
=>
GetValue
(
UnCheckedContentProperty
);
set
=>
SetValue
(
UnCheckedContentProperty
,
value
);
}
public
static
readonly
DependencyProperty
IndeterminateContentProperty
=
DependencyProperty
.
Register
(
nameof
(
IndeterminateContent
),
typeof
(
object
),
typeof
(
ToggleBlock
),
new
PropertyMetadata
(
default
(
object
)));
public
object
IndeterminateContent
{
get
=>
GetValue
(
IndeterminateContentProperty
);
set
=>
SetValue
(
IndeterminateContentProperty
,
value
);
}
[
ValueSerializer
(
typeof
(
MouseGestureValueSerializer
))]
[
TypeConverter
(
typeof
(
MouseGestureConverter
))]
public
MouseGesture
ToggleGesture
{
get
=>
(
MouseGesture
)
GetValue
(
ToggleGestureProperty
);
set
=>
SetValue
(
ToggleGestureProperty
,
value
);
}
public
ToggleBlock
()
{
CommandBindings
.
Add
(
new
CommandBinding
(
ControlCommands
.
Toggle
,
OnToggled
));
OnToggleGestureChanged
(
ToggleGesture
);
}
private
static
void
OnToggleGestureChanged
(
DependencyObject
d
,
DependencyPropertyChangedEventArgs
e
)
{
((
ToggleBlock
)
d
).
OnToggleGestureChanged
((
MouseGesture
)
e
.
NewValue
);
}
private
void
OnToggleGestureChanged
(
MouseGesture
newValue
)
{
InputBindings
.
Remove
(
_toggleBinding
);
_toggleBinding
=
new
MouseBinding
(
ControlCommands
.
Toggle
,
newValue
);
InputBindings
.
Add
(
_toggleBinding
);
}
private
void
OnToggled
(
object
sender
,
ExecutedRoutedEventArgs
e
)
{
SetCurrentValue
(
IsCheckedProperty
,
IsChecked
==
true
?
ValueBoxes
.
FalseBox
:
ValueBoxes
.
TrueBox
);
}
}
src/Shared/HandyControl_Shared/Controls/Input/CheckComboBox/CheckComboBox.cs
浏览文件 @
8e707a66
...
...
@@ -12,7 +12,7 @@ namespace HandyControl.Controls;
[
TemplatePart
(
Name
=
ElementPanel
,
Type
=
typeof
(
Panel
))]
[
TemplatePart
(
Name
=
ElementSelectAll
,
Type
=
typeof
(
CheckComboBoxItem
))]
public
class
CheckComboBox
:
ListBox
,
IDataInput
public
class
CheckComboBox
:
ListBox
{
private
const
string
ElementPanel
=
"PART_Panel"
;
...
...
@@ -24,42 +24,6 @@ public class CheckComboBox : ListBox, IDataInput
private
bool
_isInternalAction
;
public
static
readonly
DependencyProperty
IsErrorProperty
=
DependencyProperty
.
Register
(
nameof
(
IsError
),
typeof
(
bool
),
typeof
(
CheckComboBox
),
new
PropertyMetadata
(
ValueBoxes
.
FalseBox
));
public
bool
IsError
{
get
=>
(
bool
)
GetValue
(
IsErrorProperty
);
set
=>
SetValue
(
IsErrorProperty
,
ValueBoxes
.
BooleanBox
(
value
));
}
public
static
readonly
DependencyProperty
ErrorStrProperty
=
DependencyProperty
.
Register
(
nameof
(
ErrorStr
),
typeof
(
string
),
typeof
(
CheckComboBox
),
new
PropertyMetadata
(
default
(
string
)));
public
string
ErrorStr
{
get
=>
(
string
)
GetValue
(
ErrorStrProperty
);
set
=>
SetValue
(
ErrorStrProperty
,
value
);
}
public
static
readonly
DependencyProperty
TextTypeProperty
=
DependencyProperty
.
Register
(
nameof
(
TextType
),
typeof
(
TextType
),
typeof
(
CheckComboBox
),
new
PropertyMetadata
(
default
(
TextType
)));
public
TextType
TextType
{
get
=>
(
TextType
)
GetValue
(
TextTypeProperty
);
set
=>
SetValue
(
TextTypeProperty
,
value
);
}
public
static
readonly
DependencyProperty
ShowClearButtonProperty
=
DependencyProperty
.
Register
(
nameof
(
ShowClearButton
),
typeof
(
bool
),
typeof
(
CheckComboBox
),
new
PropertyMetadata
(
ValueBoxes
.
FalseBox
));
public
bool
ShowClearButton
{
get
=>
(
bool
)
GetValue
(
ShowClearButtonProperty
);
set
=>
SetValue
(
ShowClearButtonProperty
,
ValueBoxes
.
BooleanBox
(
value
));
}
public
static
readonly
DependencyProperty
MaxDropDownHeightProperty
=
System
.
Windows
.
Controls
.
ComboBox
.
MaxDropDownHeightProperty
.
AddOwner
(
typeof
(
CheckComboBox
),
new
FrameworkPropertyMetadata
(
SystemParameters
.
PrimaryScreenHeight
/
3
));
...
...
@@ -103,6 +67,15 @@ public class CheckComboBox : ListBox, IDataInput
set
=>
SetValue
(
TagStyleProperty
,
value
);
}
public
static
readonly
DependencyProperty
TagSpacingProperty
=
DependencyProperty
.
Register
(
nameof
(
TagSpacing
),
typeof
(
double
),
typeof
(
CheckComboBox
),
new
PropertyMetadata
(
ValueBoxes
.
Double0Box
));
public
double
TagSpacing
{
get
=>
(
double
)
GetValue
(
TagSpacingProperty
);
set
=>
SetValue
(
TagSpacingProperty
,
value
);
}
public
static
readonly
DependencyProperty
ShowSelectAllButtonProperty
=
DependencyProperty
.
Register
(
nameof
(
ShowSelectAllButton
),
typeof
(
bool
),
typeof
(
CheckComboBox
),
new
PropertyMetadata
(
ValueBoxes
.
FalseBox
));
...
...
@@ -146,59 +119,9 @@ public class CheckComboBox : ListBox, IDataInput
UpdateTags
();
}
public
bool
VerifyData
()
{
OperationResult
<
bool
>
result
;
if
(
VerifyFunc
!=
null
)
{
result
=
VerifyFunc
.
Invoke
(
null
);
}
else
{
if
(
SelectedItems
.
Count
>
0
)
{
result
=
OperationResult
.
Success
();
}
else
if
(
InfoElement
.
GetNecessary
(
this
))
{
result
=
OperationResult
.
Failed
(
Properties
.
Langs
.
Lang
.
IsNecessary
);
}
else
{
result
=
OperationResult
.
Success
();
}
}
var
isError
=
!
result
.
Data
;
if
(
isError
)
{
SetCurrentValue
(
IsErrorProperty
,
ValueBoxes
.
TrueBox
);
SetCurrentValue
(
ErrorStrProperty
,
result
.
Message
);
}
else
{
isError
=
Validation
.
GetHasError
(
this
);
if
(
isError
)
{
SetCurrentValue
(
ErrorStrProperty
,
Validation
.
GetErrors
(
this
)[
0
].
ErrorContent
?.
ToString
());
}
else
{
SetCurrentValue
(
IsErrorProperty
,
ValueBoxes
.
FalseBox
);
SetCurrentValue
(
ErrorStrProperty
,
default
(
string
));
}
}
return
!
isError
;
}
public
Func
<
string
,
OperationResult
<
bool
>>
VerifyFunc
{
get
;
set
;
}
protected
override
void
OnSelectionChanged
(
SelectionChangedEventArgs
e
)
{
UpdateTags
();
VerifyData
();
base
.
OnSelectionChanged
(
e
);
}
...
...
src/Shared/HandyControl_Shared/Controls/Input/ComboBox.cs
浏览文件 @
8e707a66
...
...
@@ -17,7 +17,7 @@ namespace HandyControl.Controls;
[
TemplatePart
(
Name
=
AutoCompletePanel
,
Type
=
typeof
(
Panel
))]
[
TemplatePart
(
Name
=
EditableTextBox
,
Type
=
typeof
(
System
.
Windows
.
Controls
.
TextBox
))]
[
TemplatePart
(
Name
=
AutoPopupAutoComplete
,
Type
=
typeof
(
Popup
))]
public
class
ComboBox
:
System
.
Windows
.
Controls
.
ComboBox
,
IDataInput
public
class
ComboBox
:
System
.
Windows
.
Controls
.
ComboBox
{
#if NET40
...
...
@@ -68,8 +68,6 @@ public class ComboBox : System.Windows.Controls.ComboBox, IDataInput
if
(
_editableTextBox
!=
null
)
{
_editableTextBox
.
TextChanged
+=
EditableTextBox_TextChanged
;
_editableTextBox
.
SetBinding
(
SelectionBrushProperty
,
new
Binding
(
SelectionBrushProperty
.
Name
)
{
Source
=
this
});
#if !(NET40 || NET45 || NET451 || NET452 || NET46 || NET461 || NET462 || NET47 || NET471 || NET472)
_editableTextBox
.
SetBinding
(
SelectionTextBrushProperty
,
new
Binding
(
SelectionTextBrushProperty
.
Name
)
{
Source
=
this
});
...
...
@@ -114,11 +112,6 @@ public class ComboBox : System.Windows.Controls.ComboBox, IDataInput
#endif
private
void
EditableTextBox_TextChanged
(
object
sender
,
TextChangedEventArgs
e
)
{
VerifyData
();
}
private
void
EditableTextBox_LostFocus
(
object
sender
,
RoutedEventArgs
e
)
{
if
(
_autoPopupAutoComplete
!=
null
)
...
...
@@ -149,88 +142,16 @@ public class ComboBox : System.Windows.Controls.ComboBox, IDataInput
{
_isAutoCompleteAction
=
false
;
base
.
OnSelectionChanged
(
e
);
VerifyData
();
#if NET40
_isAutoCompleteAction
=
true
;
#endif
}
/// <summary>
/// 数据验证委托
/// </summary>
public
Func
<
string
,
OperationResult
<
bool
>>
VerifyFunc
{
get
;
set
;
}
/// <summary>
/// 数据搜索委托
/// </summary>
public
Func
<
ItemCollection
,
object
,
IEnumerable
<
object
>>
SearchFunc
{
get
;
set
;
}
/// <summary>
/// 数据是否错误
/// </summary>
public
static
readonly
DependencyProperty
IsErrorProperty
=
DependencyProperty
.
Register
(
nameof
(
IsError
),
typeof
(
bool
),
typeof
(
ComboBox
),
new
PropertyMetadata
(
ValueBoxes
.
FalseBox
));
/// <summary>
/// 数据是否错误
/// </summary>
public
bool
IsError
{
get
=>
(
bool
)
GetValue
(
IsErrorProperty
);
set
=>
SetValue
(
IsErrorProperty
,
ValueBoxes
.
BooleanBox
(
value
));
}
/// <summary>
/// 错误提示
/// </summary>
public
static
readonly
DependencyProperty
ErrorStrProperty
=
DependencyProperty
.
Register
(
nameof
(
ErrorStr
),
typeof
(
string
),
typeof
(
ComboBox
),
new
PropertyMetadata
(
default
(
string
)));
/// <summary>
/// 错误提示
/// </summary>
public
string
ErrorStr
{
get
=>
(
string
)
GetValue
(
ErrorStrProperty
);
set
=>
SetValue
(
ErrorStrProperty
,
value
);
}
/// <summary>
/// 文本类型
/// </summary>
public
static
readonly
DependencyPropertyKey
TextTypePropertyKey
=
DependencyProperty
.
RegisterReadOnly
(
"TextType"
,
typeof
(
TextType
),
typeof
(
ComboBox
),
new
PropertyMetadata
(
default
(
TextType
)));
/// <summary>
/// 文本类型
/// </summary>
public
static
readonly
DependencyProperty
TextTypeProperty
=
TextTypePropertyKey
.
DependencyProperty
;
/// <summary>
/// 文本类型
/// </summary>
public
TextType
TextType
{
get
=>
(
TextType
)
GetValue
(
TextTypeProperty
);
set
=>
SetValue
(
TextTypeProperty
,
value
);
}
/// <summary>
/// 是否显示清除按钮
/// </summary>
public
static
readonly
DependencyProperty
ShowClearButtonProperty
=
DependencyProperty
.
Register
(
nameof
(
ShowClearButton
),
typeof
(
bool
),
typeof
(
ComboBox
),
new
PropertyMetadata
(
ValueBoxes
.
FalseBox
));
/// <summary>
/// 是否显示清除按钮
/// </summary>
public
bool
ShowClearButton
{
get
=>
(
bool
)
GetValue
(
ShowClearButtonProperty
);
set
=>
SetValue
(
ShowClearButtonProperty
,
ValueBoxes
.
BooleanBox
(
value
));
}
/// <summary>
/// 是否自动完成输入
/// </summary>
...
...
@@ -327,59 +248,6 @@ public class ComboBox : System.Windows.Controls.ComboBox, IDataInput
set
=>
SetValue
(
CaretBrushProperty
,
value
);
}
/// <summary>
/// 验证数据
/// </summary>
/// <returns></returns>
public
virtual
bool
VerifyData
()
{
OperationResult
<
bool
>
result
;
var
value
=
_editableTextBox
==
null
?
Text
:
_editableTextBox
.
Text
;
if
(
VerifyFunc
!=
null
)
{
result
=
VerifyFunc
.
Invoke
(
value
);
}
else
{
if
(!
string
.
IsNullOrEmpty
(
value
))
{
result
=
OperationResult
.
Success
();
}
else
if
(
InfoElement
.
GetNecessary
(
this
))
{
result
=
OperationResult
.
Failed
(
Properties
.
Langs
.
Lang
.
IsNecessary
);
}
else
{
result
=
OperationResult
.
Success
();
}
}
var
isError
=
!
result
.
Data
;
if
(
isError
)
{
SetCurrentValue
(
IsErrorProperty
,
ValueBoxes
.
TrueBox
);
SetCurrentValue
(
ErrorStrProperty
,
result
.
Message
);
}
else
{
isError
=
Validation
.
GetHasError
(
this
);
if
(
isError
)
{
SetCurrentValue
(
ErrorStrProperty
,
Validation
.
GetErrors
(
this
)[
0
].
ErrorContent
?.
ToString
());
}
else
{
SetCurrentValue
(
IsErrorProperty
,
ValueBoxes
.
FalseBox
);
SetCurrentValue
(
ErrorStrProperty
,
default
(
string
));
}
}
return
!
isError
;
}
/// <summary>
/// 更新搜索的项目
/// </summary>
...
...
src/Shared/HandyControl_Shared/Controls/Input/DatePicker.cs
浏览文件 @
8e707a66
using
System
;
using
System.Windows
;
using
System.Windows.Controls
;
using
System.Windows
;
using
System.Windows.Controls.Primitives
;
using
System.Windows.Data
;
using
System.Windows.Input
;
using
System.Windows.Media
;
using
HandyControl.Data
;
using
HandyControl.Interactivity
;
namespace
HandyControl.Controls
;
[
TemplatePart
(
Name
=
ElementTextBox
,
Type
=
typeof
(
DatePickerTextBox
))]
public
class
DatePicker
:
System
.
Windows
.
Controls
.
DatePicker
,
IDataInput
public
class
DatePicker
:
System
.
Windows
.
Controls
.
DatePicker
{
private
const
string
ElementTextBox
=
"PART_TextBox"
;
...
...
@@ -28,11 +25,6 @@ public class DatePicker : System.Windows.Controls.DatePicker, IDataInput
public
override
void
OnApplyTemplate
()
{
if
(
_textBox
!=
null
)
{
_textBox
.
TextChanged
-=
TextBox_TextChanged
;
}
base
.
OnApplyTemplate
();
_textBox
=
GetTemplateChild
(
ElementTextBox
)
as
System
.
Windows
.
Controls
.
TextBox
;
...
...
@@ -44,51 +36,9 @@ public class DatePicker : System.Windows.Controls.DatePicker, IDataInput
#endif
_textBox
.
SetBinding
(
SelectionOpacityProperty
,
new
Binding
(
SelectionOpacityProperty
.
Name
)
{
Source
=
this
});
_textBox
.
SetBinding
(
CaretBrushProperty
,
new
Binding
(
CaretBrushProperty
.
Name
)
{
Source
=
this
});
_textBox
.
TextChanged
+=
TextBox_TextChanged
;
}
}
private
void
TextBox_TextChanged
(
object
sender
,
TextChangedEventArgs
e
)
=>
VerifyData
();
public
Func
<
string
,
OperationResult
<
bool
>>
VerifyFunc
{
get
;
set
;
}
public
static
readonly
DependencyProperty
IsErrorProperty
=
DependencyProperty
.
Register
(
nameof
(
IsError
),
typeof
(
bool
),
typeof
(
DatePicker
),
new
PropertyMetadata
(
ValueBoxes
.
FalseBox
));
public
bool
IsError
{
get
=>
(
bool
)
GetValue
(
IsErrorProperty
);
set
=>
SetValue
(
IsErrorProperty
,
ValueBoxes
.
BooleanBox
(
value
));
}
public
static
readonly
DependencyProperty
ErrorStrProperty
=
DependencyProperty
.
Register
(
nameof
(
ErrorStr
),
typeof
(
string
),
typeof
(
DatePicker
),
new
PropertyMetadata
(
default
(
string
)));
public
string
ErrorStr
{
get
=>
(
string
)
GetValue
(
ErrorStrProperty
);
set
=>
SetValue
(
ErrorStrProperty
,
value
);
}
public
static
readonly
DependencyProperty
TextTypeProperty
=
DependencyProperty
.
Register
(
nameof
(
TextType
),
typeof
(
TextType
),
typeof
(
DatePicker
),
new
PropertyMetadata
(
default
(
TextType
)));
public
TextType
TextType
{
get
=>
(
TextType
)
GetValue
(
TextTypeProperty
);
set
=>
SetValue
(
TextTypeProperty
,
value
);
}
public
static
readonly
DependencyProperty
ShowClearButtonProperty
=
DependencyProperty
.
Register
(
nameof
(
ShowClearButton
),
typeof
(
bool
),
typeof
(
DatePicker
),
new
PropertyMetadata
(
ValueBoxes
.
FalseBox
));
public
bool
ShowClearButton
{
get
=>
(
bool
)
GetValue
(
ShowClearButtonProperty
);
set
=>
SetValue
(
ShowClearButtonProperty
,
ValueBoxes
.
BooleanBox
(
value
));
}
public
static
readonly
DependencyProperty
SelectionBrushProperty
=
TextBoxBase
.
SelectionBrushProperty
.
AddOwner
(
typeof
(
DatePicker
));
...
...
@@ -128,50 +78,4 @@ public class DatePicker : System.Windows.Controls.DatePicker, IDataInput
get
=>
(
Brush
)
GetValue
(
CaretBrushProperty
);
set
=>
SetValue
(
CaretBrushProperty
,
value
);
}
public
virtual
bool
VerifyData
()
{
OperationResult
<
bool
>
result
;
if
(
VerifyFunc
!=
null
)
{
result
=
VerifyFunc
.
Invoke
(
Text
);
}
else
{
if
(!
string
.
IsNullOrEmpty
(
Text
))
{
result
=
OperationResult
.
Success
();
}
else
if
(
InfoElement
.
GetNecessary
(
this
))
{
result
=
OperationResult
.
Failed
(
Properties
.
Langs
.
Lang
.
IsNecessary
);
}
else
{
result
=
OperationResult
.
Success
();
}
}
var
isError
=
!
result
.
Data
;
if
(
isError
)
{
SetCurrentValue
(
IsErrorProperty
,
ValueBoxes
.
TrueBox
);
SetCurrentValue
(
ErrorStrProperty
,
result
.
Message
);
}
else
{
isError
=
Validation
.
GetHasError
(
this
);
if
(
isError
)
{
SetCurrentValue
(
ErrorStrProperty
,
Validation
.
GetErrors
(
this
)[
0
].
ErrorContent
?.
ToString
());
}
else
{
SetCurrentValue
(
IsErrorProperty
,
ValueBoxes
.
FalseBox
);
SetCurrentValue
(
ErrorStrProperty
,
default
(
string
));
}
}
return
!
isError
;
}
}
src/Shared/HandyControl_Shared/Controls/Input/DateTimePicker.cs
浏览文件 @
8e707a66
...
...
@@ -20,7 +20,7 @@ namespace HandyControl.Controls;
[
TemplatePart
(
Name
=
ElementTextBox
,
Type
=
typeof
(
WatermarkTextBox
))]
[
TemplatePart
(
Name
=
ElementButton
,
Type
=
typeof
(
Button
))]
[
TemplatePart
(
Name
=
ElementPopup
,
Type
=
typeof
(
Popup
))]
public
class
DateTimePicker
:
Control
,
IDataInput
public
class
DateTimePicker
:
Control
{
#
region
Constants
...
...
@@ -238,44 +238,6 @@ public class DateTimePicker : Control, IDataInput
SetCurrentValue
(
TextProperty
,
value
);
}
public
Func
<
string
,
OperationResult
<
bool
>>
VerifyFunc
{
get
;
set
;
}
public
static
readonly
DependencyProperty
IsErrorProperty
=
DependencyProperty
.
Register
(
nameof
(
IsError
),
typeof
(
bool
),
typeof
(
DateTimePicker
),
new
PropertyMetadata
(
ValueBoxes
.
FalseBox
));
public
bool
IsError
{
get
=>
(
bool
)
GetValue
(
IsErrorProperty
);
set
=>
SetValue
(
IsErrorProperty
,
ValueBoxes
.
BooleanBox
(
value
));
}
public
static
readonly
DependencyProperty
ErrorStrProperty
=
DependencyProperty
.
Register
(
nameof
(
ErrorStr
),
typeof
(
string
),
typeof
(
DateTimePicker
),
new
PropertyMetadata
(
default
(
string
)));
public
string
ErrorStr
{
get
=>
(
string
)
GetValue
(
ErrorStrProperty
);
set
=>
SetValue
(
ErrorStrProperty
,
value
);
}
public
static
readonly
DependencyProperty
TextTypeProperty
=
DependencyProperty
.
Register
(
nameof
(
TextType
),
typeof
(
TextType
),
typeof
(
DateTimePicker
),
new
PropertyMetadata
(
default
(
TextType
)));
public
TextType
TextType
{
get
=>
(
TextType
)
GetValue
(
TextTypeProperty
);
set
=>
SetValue
(
TextTypeProperty
,
value
);
}
public
static
readonly
DependencyProperty
ShowClearButtonProperty
=
DependencyProperty
.
Register
(
nameof
(
ShowClearButton
),
typeof
(
bool
),
typeof
(
DateTimePicker
),
new
PropertyMetadata
(
ValueBoxes
.
FalseBox
));
public
bool
ShowClearButton
{
get
=>
(
bool
)
GetValue
(
ShowClearButtonProperty
);
set
=>
SetValue
(
ShowClearButtonProperty
,
ValueBoxes
.
BooleanBox
(
value
));
}
public
static
readonly
DependencyProperty
SelectionBrushProperty
=
TextBoxBase
.
SelectionBrushProperty
.
AddOwner
(
typeof
(
DateTimePicker
));
...
...
@@ -405,52 +367,6 @@ public class DateTimePicker : Control, IDataInput
}
}
public
virtual
bool
VerifyData
()
{
OperationResult
<
bool
>
result
;
if
(
VerifyFunc
!=
null
)
{
result
=
VerifyFunc
.
Invoke
(
Text
);
}
else
{
if
(!
string
.
IsNullOrEmpty
(
Text
))
{
result
=
OperationResult
.
Success
();
}
else
if
(
InfoElement
.
GetNecessary
(
this
))
{
result
=
OperationResult
.
Failed
(
Properties
.
Langs
.
Lang
.
IsNecessary
);
}
else
{
result
=
OperationResult
.
Success
();
}
}
var
isError
=
!
result
.
Data
;
if
(
isError
)
{
SetCurrentValue
(
IsErrorProperty
,
ValueBoxes
.
TrueBox
);
SetCurrentValue
(
ErrorStrProperty
,
result
.
Message
);
}
else
{
isError
=
Validation
.
GetHasError
(
this
);
if
(
isError
)
{
SetCurrentValue
(
ErrorStrProperty
,
Validation
.
GetErrors
(
this
)[
0
].
ErrorContent
?.
ToString
());
}
else
{
SetCurrentValue
(
IsErrorProperty
,
ValueBoxes
.
FalseBox
);
SetCurrentValue
(
ErrorStrProperty
,
default
(
string
));
}
}
return
!
isError
;
}
public
override
string
ToString
()
=>
SelectedDateTime
?.
ToString
(
DateTimeFormat
)
??
string
.
Empty
;
#
endregion
...
...
@@ -527,7 +443,6 @@ public class DateTimePicker : Control, IDataInput
private
void
TextBox_TextChanged
(
object
sender
,
TextChangedEventArgs
e
)
{
SetValueNoCallback
(
TextProperty
,
_textBox
.
Text
);
VerifyData
();
}
private
bool
ProcessDateTimePickerKey
(
KeyEventArgs
e
)
...
...
src/Shared/HandyControl_Shared/Controls/Input/IDataInput.cs
已删除
100644 → 0
浏览文件 @
322e3669
using
System
;
using
HandyControl.Data
;
namespace
HandyControl.Controls
;
/// <summary>
/// 表示可以成为一个数据输入控件
/// </summary>
public
interface
IDataInput
{
/// <summary>
/// 验证数据
/// </summary>
/// <returns></returns>
bool
VerifyData
();
/// <summary>
/// 数据验证委托
/// </summary>
Func
<
string
,
OperationResult
<
bool
>>
VerifyFunc
{
get
;
set
;
}
/// <summary>
/// 数据是否错误
/// </summary>
bool
IsError
{
get
;
set
;
}
/// <summary>
/// 错误提示
/// </summary>
string
ErrorStr
{
get
;
set
;
}
/// <summary>
/// 文本类型
/// </summary>
TextType
TextType
{
get
;
set
;
}
/// <summary>
/// 是否显示清除按钮
/// </summary>
bool
ShowClearButton
{
get
;
set
;
}
}
src/Shared/HandyControl_Shared/Controls/Input/PasswordBox.cs
浏览文件 @
8e707a66
...
...
@@ -10,13 +10,12 @@ using System.Windows.Input;
using
System.Windows.Media
;
using
HandyControl.Data
;
using
HandyControl.Interactivity
;
using
HandyControl.Properties.Langs
;
namespace
HandyControl.Controls
;
[
TemplatePart
(
Name
=
ElementPasswordBox
,
Type
=
typeof
(
System
.
Windows
.
Controls
.
PasswordBox
))]
[
TemplatePart
(
Name
=
ElementTextBox
,
Type
=
typeof
(
System
.
Windows
.
Controls
.
TextBox
))]
public
class
PasswordBox
:
Control
,
IDataInput
public
class
PasswordBox
:
Control
{
private
const
string
ElementPasswordBox
=
"PART_PasswordBox"
;
...
...
@@ -39,54 +38,6 @@ public class PasswordBox : Control, IDataInput
set
=>
SetValue
(
PasswordCharProperty
,
value
);
}
/// <summary>
/// 数据是否错误
/// </summary>
public
static
readonly
DependencyProperty
IsErrorProperty
=
DependencyProperty
.
Register
(
nameof
(
IsError
),
typeof
(
bool
),
typeof
(
PasswordBox
),
new
PropertyMetadata
(
ValueBoxes
.
FalseBox
));
public
bool
IsError
{
get
=>
(
bool
)
GetValue
(
IsErrorProperty
);
set
=>
SetValue
(
IsErrorProperty
,
ValueBoxes
.
BooleanBox
(
value
));
}
/// <summary>
/// 错误提示
/// </summary>
public
static
readonly
DependencyProperty
ErrorStrProperty
=
DependencyProperty
.
Register
(
nameof
(
ErrorStr
),
typeof
(
string
),
typeof
(
PasswordBox
),
new
PropertyMetadata
(
default
(
string
)));
public
string
ErrorStr
{
get
=>
(
string
)
GetValue
(
ErrorStrProperty
);
set
=>
SetValue
(
ErrorStrProperty
,
value
);
}
/// <summary>
/// 文本类型
/// </summary>
public
static
readonly
DependencyProperty
TextTypeProperty
=
DependencyProperty
.
Register
(
nameof
(
TextType
),
typeof
(
TextType
),
typeof
(
PasswordBox
),
new
PropertyMetadata
(
default
(
TextType
)));
public
TextType
TextType
{
get
=>
(
TextType
)
GetValue
(
TextTypeProperty
);
set
=>
SetValue
(
TextTypeProperty
,
value
);
}
/// <summary>
/// 是否显示清除按钮
/// </summary>
public
static
readonly
DependencyProperty
ShowClearButtonProperty
=
DependencyProperty
.
Register
(
nameof
(
ShowClearButton
),
typeof
(
bool
),
typeof
(
PasswordBox
),
new
PropertyMetadata
(
ValueBoxes
.
FalseBox
));
public
bool
ShowClearButton
{
get
=>
(
bool
)
GetValue
(
ShowClearButtonProperty
);
set
=>
SetValue
(
ShowClearButtonProperty
,
ValueBoxes
.
BooleanBox
(
value
));
}
public
static
readonly
DependencyProperty
ShowEyeButtonProperty
=
DependencyProperty
.
Register
(
nameof
(
ShowEyeButton
),
typeof
(
bool
),
typeof
(
PasswordBox
),
new
PropertyMetadata
(
ValueBoxes
.
FalseBox
));
...
...
@@ -234,52 +185,6 @@ public class PasswordBox : Control, IDataInput
[
DesignerSerializationVisibility
(
DesignerSerializationVisibility
.
Hidden
)]
public
SecureString
SecurePassword
=>
ActualPasswordBox
?.
SecurePassword
;
public
Func
<
string
,
OperationResult
<
bool
>>
VerifyFunc
{
get
;
set
;
}
public
virtual
bool
VerifyData
()
{
OperationResult
<
bool
>
result
;
if
(
VerifyFunc
!=
null
)
{
result
=
VerifyFunc
.
Invoke
(
ShowEyeButton
&&
ShowPassword
?
_textBox
.
Text
:
ActualPasswordBox
.
Password
);
}
else
{
if
(!
string
.
IsNullOrEmpty
(
ShowEyeButton
&&
ShowPassword
?
_textBox
.
Text
:
ActualPasswordBox
.
Password
))
result
=
OperationResult
.
Success
();
else
if
(
InfoElement
.
GetNecessary
(
this
))
result
=
OperationResult
.
Failed
(
Lang
.
IsNecessary
);
else
result
=
OperationResult
.
Success
();
}
var
isError
=
!
result
.
Data
;
if
(
isError
)
{
SetCurrentValue
(
IsErrorProperty
,
ValueBoxes
.
TrueBox
);
SetCurrentValue
(
ErrorStrProperty
,
result
.
Message
);
}
else
{
isError
=
Validation
.
GetHasError
(
this
);
if
(
isError
)
{
SetCurrentValue
(
ErrorStrProperty
,
Validation
.
GetErrors
(
this
)[
0
].
ErrorContent
?.
ToString
());
}
else
{
SetCurrentValue
(
IsErrorProperty
,
ValueBoxes
.
FalseBox
);
SetCurrentValue
(
ErrorStrProperty
,
default
(
string
));
}
}
return
!
isError
;
}
private
static
void
OnShowPasswordChanged
(
DependencyObject
d
,
DependencyPropertyChangedEventArgs
e
)
{
var
ctl
=
(
PasswordBox
)
d
;
...
...
@@ -376,8 +281,6 @@ public class PasswordBox : Control, IDataInput
_textBox
.
Text
=
ActualPasswordBox
.
Password
;
}
}
VerifyData
();
}
private
void
TextBox_TextChanged
(
object
sender
,
TextChangedEventArgs
e
)
...
...
@@ -387,7 +290,5 @@ public class PasswordBox : Control, IDataInput
Password
=
_textBox
.
Text
;
SetCurrentValue
(
UnsafePasswordProperty
,
Password
);
}
VerifyData
();
}
}
src/Shared/HandyControl_Shared/Controls/Input/TimePicker.cs
浏览文件 @
8e707a66
...
...
@@ -20,7 +20,7 @@ namespace HandyControl.Controls;
[
TemplatePart
(
Name
=
ElementTextBox
,
Type
=
typeof
(
WatermarkTextBox
))]
[
TemplatePart
(
Name
=
ElementButton
,
Type
=
typeof
(
Button
))]
[
TemplatePart
(
Name
=
ElementPopup
,
Type
=
typeof
(
Popup
))]
public
class
TimePicker
:
Control
,
IDataInput
public
class
TimePicker
:
Control
{
#
region
Constants
...
...
@@ -260,44 +260,6 @@ public class TimePicker : Control, IDataInput
#
endregion
Text
public
Func
<
string
,
OperationResult
<
bool
>>
VerifyFunc
{
get
;
set
;
}
public
static
readonly
DependencyProperty
IsErrorProperty
=
DependencyProperty
.
Register
(
nameof
(
IsError
),
typeof
(
bool
),
typeof
(
TimePicker
),
new
PropertyMetadata
(
ValueBoxes
.
FalseBox
));
public
bool
IsError
{
get
=>
(
bool
)
GetValue
(
IsErrorProperty
);
set
=>
SetValue
(
IsErrorProperty
,
ValueBoxes
.
BooleanBox
(
value
));
}
public
static
readonly
DependencyProperty
ErrorStrProperty
=
DependencyProperty
.
Register
(
nameof
(
ErrorStr
),
typeof
(
string
),
typeof
(
TimePicker
),
new
PropertyMetadata
(
default
(
string
)));
public
string
ErrorStr
{
get
=>
(
string
)
GetValue
(
ErrorStrProperty
);
set
=>
SetValue
(
ErrorStrProperty
,
value
);
}
public
static
readonly
DependencyProperty
TextTypeProperty
=
DependencyProperty
.
Register
(
nameof
(
TextType
),
typeof
(
TextType
),
typeof
(
TimePicker
),
new
PropertyMetadata
(
default
(
TextType
)));
public
TextType
TextType
{
get
=>
(
TextType
)
GetValue
(
TextTypeProperty
);
set
=>
SetValue
(
TextTypeProperty
,
value
);
}
public
static
readonly
DependencyProperty
ShowClearButtonProperty
=
DependencyProperty
.
Register
(
nameof
(
ShowClearButton
),
typeof
(
bool
),
typeof
(
TimePicker
),
new
PropertyMetadata
(
ValueBoxes
.
FalseBox
));
public
bool
ShowClearButton
{
get
=>
(
bool
)
GetValue
(
ShowClearButtonProperty
);
set
=>
SetValue
(
ShowClearButtonProperty
,
ValueBoxes
.
BooleanBox
(
value
));
}
public
static
readonly
DependencyProperty
SelectionBrushProperty
=
TextBoxBase
.
SelectionBrushProperty
.
AddOwner
(
typeof
(
TimePicker
));
...
...
@@ -371,52 +333,6 @@ public class TimePicker : Control, IDataInput
#
region
Public
Methods
public
virtual
bool
VerifyData
()
{
OperationResult
<
bool
>
result
;
if
(
VerifyFunc
!=
null
)
{
result
=
VerifyFunc
.
Invoke
(
Text
);
}
else
{
if
(!
string
.
IsNullOrEmpty
(
Text
))
{
result
=
OperationResult
.
Success
();
}
else
if
(
InfoElement
.
GetNecessary
(
this
))
{
result
=
OperationResult
.
Failed
(
Properties
.
Langs
.
Lang
.
IsNecessary
);
}
else
{
result
=
OperationResult
.
Success
();
}
}
var
isError
=
!
result
.
Data
;
if
(
isError
)
{
SetCurrentValue
(
IsErrorProperty
,
ValueBoxes
.
TrueBox
);
SetCurrentValue
(
ErrorStrProperty
,
result
.
Message
);
}
else
{
isError
=
Validation
.
GetHasError
(
this
);
if
(
isError
)
{
SetCurrentValue
(
ErrorStrProperty
,
Validation
.
GetErrors
(
this
)[
0
].
ErrorContent
?.
ToString
());
}
else
{
SetCurrentValue
(
IsErrorProperty
,
ValueBoxes
.
FalseBox
);
SetCurrentValue
(
ErrorStrProperty
,
default
(
string
));
}
}
return
!
isError
;
}
public
override
void
OnApplyTemplate
()
{
if
(
DesignerProperties
.
GetIsInDesignMode
(
this
))
return
;
...
...
@@ -565,7 +481,6 @@ public class TimePicker : Control, IDataInput
private
void
TextBox_TextChanged
(
object
sender
,
TextChangedEventArgs
e
)
{
SetValueNoCallback
(
TextProperty
,
_textBox
.
Text
);
VerifyData
();
}
private
bool
ProcessTimePickerKey
(
KeyEventArgs
e
)
...
...
src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
浏览文件 @
8e707a66
...
...
@@ -204,7 +204,6 @@
<Compile
Include=
"$(MSBuildThisFileDirectory)Controls\Input\ComboBox.cs"
/>
<Compile
Include=
"$(MSBuildThisFileDirectory)Controls\Input\DatePicker.cs"
/>
<Compile
Include=
"$(MSBuildThisFileDirectory)Controls\Input\DateTimePicker.cs"
/>
<Compile
Include=
"$(MSBuildThisFileDirectory)Controls\Input\IDataInput.cs"
/>
<Compile
Include=
"$(MSBuildThisFileDirectory)Controls\Input\NumericUpDown.cs"
/>
<Compile
Include=
"$(MSBuildThisFileDirectory)Controls\Input\PasswordBox.cs"
/>
<Compile
Include=
"$(MSBuildThisFileDirectory)Controls\Input\SearchBar.cs"
/>
...
...
src/Shared/HandyControl_Shared/Interactivity/Commands/ControlCommands.cs
浏览文件 @
8e707a66
...
...
@@ -186,4 +186,6 @@ public static class ControlCommands
/// 更多
/// </summary>
public
static
RoutedCommand
More
{
get
;
}
=
new
(
nameof
(
More
),
typeof
(
ControlCommands
));
public
static
RoutedCommand
Toggle
{
get
;
}
=
new
(
nameof
(
Toggle
),
typeof
(
ControlCommands
));
}
src/Shared/HandyControl_Shared/Themes/Basic/Sizes.xaml
浏览文件 @
8e707a66
...
...
@@ -2,9 +2,10 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<sys:Double x:Key="DefaultControlHeight">30</sys:Double>
<Thickness x:Key="DefaultControlPadding">10,6</Thickness>
<Thickness x:Key="DefaultInputPadding">8,6</Thickness>
<sys:Double x:Key="DefaultControlHeight">28</sys:Double>
<sys:Double x:Key="SmallControlHeight">20</sys:Double>
<Thickness x:Key="DefaultControlPadding">10,5</Thickness>
<Thickness x:Key="DefaultInputPadding">8,0</Thickness>
<CornerRadius x:Key="DefaultCornerRadius">4</CornerRadius>
<sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarButtonHeightKey}">30</sys:Double>
...
...
src/Shared/HandyControl_Shared/Themes/Styles/Base/BaseStyle.xaml
浏览文件 @
8e707a66
...
...
@@ -6,7 +6,7 @@
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Style="{StaticResource RectangleFocusVisual}" RadiusX="4" RadiusY="4"/>
<Rectangle Style="{StaticResource RectangleFocusVisual}" RadiusX="4" RadiusY="4"
/>
</ControlTemplate>
</Setter.Value>
</Setter>
...
...
@@ -16,7 +16,7 @@
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Style="{StaticResource RectangleFocusVisual}"/>
<Rectangle Style="{StaticResource RectangleFocusVisual}"
/>
</ControlTemplate>
</Setter.Value>
</Setter>
...
...
@@ -26,7 +26,7 @@
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Opacity=".6" SnapsToDevicePixels="true" Stroke="{DynamicResource SecondaryBorderBrush}" StrokeThickness="2" StrokeDashArray="1 1" RadiusX="4" RadiusY="4"/>
<Rectangle Opacity=".6" SnapsToDevicePixels="true" Stroke="{DynamicResource SecondaryBorderBrush}" StrokeThickness="2" StrokeDashArray="1 1" RadiusX="4" RadiusY="4"
/>
</ControlTemplate>
</Setter.Value>
</Setter>
...
...
@@ -36,7 +36,7 @@
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Opacity=".6" SnapsToDevicePixels="true" Stroke="{DynamicResource SecondaryBorderBrush}" StrokeThickness="2" StrokeDashArray="1 1"/>
<Rectangle Opacity=".6" SnapsToDevicePixels="true" Stroke="{DynamicResource SecondaryBorderBrush}" StrokeThickness="2" StrokeDashArray="1 1"
/>
</ControlTemplate>
</Setter.Value>
</Setter>
...
...
@@ -45,40 +45,41 @@
<ControlTemplate x:Key="InputElementErrorTemplate">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"
/>
<RowDefinition Height="Auto"
/>
</Grid.RowDefinitions>
<AdornedElementPlaceholder x:Name="adornedElementPlaceholder"/>
<AdornedElementPlaceholder x:Name="adornedElementPlaceholder"
/>
<hc:TransitioningContentControl TransitionMode="Top2Bottom" Grid.Row="1" ClipToBounds="True">
<TextBlock Foreground="{DynamicResource DangerBrush}" Margin="2,2,0,0" Text="{Binding Path=AdornedElement.(Validation.Errors)[0].ErrorContent, ElementName=adornedElementPlaceholder}"/>
<TextBlock Foreground="{DynamicResource DangerBrush}" Margin="2,2,0,0" Text="{Binding Path=AdornedElement.(Validation.Errors)[0].ErrorContent, ElementName=adornedElementPlaceholder}"
/>
</hc:TransitioningContentControl>
</Grid>
</ControlTemplate>
<Style x:Key="InputElementBaseStyle" TargetType="Control">
<Setter Property="hc:TitleElement.MarginOnTheLeft" Value="0,8,6,0"/>
<Setter Property="hc:BorderElement.CornerRadius" Value="{StaticResource DefaultCornerRadius}"/>
<Setter Property="MinHeight" Value="{StaticResource DefaultControlHeight}"/>
<Setter Property="Padding" Value="{StaticResource DefaultInputPadding}"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="Background" Value="{DynamicResource RegionBrush}"/>
<Setter Property="BorderBrush" Value="{DynamicResource BorderBrush}"/>
<Setter Property="Foreground" Value="{DynamicResource PrimaryTextBrush}"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="FocusVisualStyle" Value="{x:Null}"/>
<Setter Property="Validation.ErrorTemplate" Value="{StaticResource InputElementErrorTemplate}"/>
<Setter Property="hc:TitleElement.MarginOnTheLeft" Value="0,7,6,0" />
<Setter Property="hc:TitleElement.MarginOnTheTop" Value="8,0,0,5" />
<Setter Property="hc:BorderElement.CornerRadius" Value="{StaticResource DefaultCornerRadius}" />
<Setter Property="MinHeight" Value="{StaticResource DefaultControlHeight}" />
<Setter Property="Padding" Value="{StaticResource DefaultInputPadding}" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="Background" Value="{DynamicResource RegionBrush}" />
<Setter Property="BorderBrush" Value="{DynamicResource BorderBrush}" />
<Setter Property="Foreground" Value="{DynamicResource PrimaryTextBrush}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
<Setter Property="Validation.ErrorTemplate" Value="{StaticResource InputElementErrorTemplate}" />
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="BorderBrush" Value="{DynamicResource DangerBrush}"/>
<Setter Property="BorderBrush" Value="{DynamicResource DangerBrush}"
/>
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key="BaseStyle" TargetType="Control">
<Setter Property="Foreground" Value="{DynamicResource PrimaryTextBrush}"/>
<Setter Property="FontSize" Value="{StaticResource TextFontSize}"/>
<Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
<Setter Property="Foreground" Value="{DynamicResource PrimaryTextBrush}"
/>
<Setter Property="FontSize" Value="{StaticResource TextFontSize}"
/>
<Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"
/>
</Style>
</ResourceDictionary>
src/Shared/HandyControl_Shared/Themes/Styles/Base/CheckComboBoxBaseStyle.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControl_Shared/Themes/Styles/Base/ComboBoxBaseStyle.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControl_Shared/Themes/Styles/Base/DataGridBaseStyle.xaml
浏览文件 @
8e707a66
...
...
@@ -252,7 +252,8 @@
<Setter Property="ScrollViewer.PanningMode" Value="Both" />
<Setter Property="Stylus.IsFlicksEnabled" Value="False" />
<Setter Property="Padding" Value="{StaticResource DefaultInputPadding}" />
<Setter Property="hc:TitleElement.MarginOnTheLeft" Value="0,8,6,8" />
<Setter Property="hc:TitleElement.MarginOnTheLeft" Value="0,7,6,0" />
<Setter Property="hc:TitleElement.MarginOnTheTop" Value="8,0,0,5" />
<Setter Property="Template" Value="{StaticResource ComboBoxTemplate}" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Validation.ErrorTemplate" Value="{x:Null}" />
...
...
@@ -265,7 +266,8 @@
</Style>
<Style x:Key="DataGridEditingTextColumnStyle" TargetType="TextBox" >
<Setter Property="hc:TitleElement.MarginOnTheLeft" Value="0,8,6,0" />
<Setter Property="hc:TitleElement.MarginOnTheLeft" Value="0,7,6,0" />
<Setter Property="hc:TitleElement.MarginOnTheTop" Value="8,0,0,5" />
<Setter Property="hc:BorderElement.CornerRadius" Value="{StaticResource DefaultCornerRadius}" />
<Setter Property="MinHeight" Value="{StaticResource DefaultControlHeight}" />
<Setter Property="Padding" Value="{StaticResource DefaultInputPadding}" />
...
...
@@ -325,8 +327,9 @@
<Setter Property="ScrollViewer.CanContentScroll" Value="true" />
<Setter Property="ScrollViewer.PanningMode" Value="Both" />
<Setter Property="Stylus.IsFlicksEnabled" Value="False" />
<Setter Property="hc:TitleElement.MarginOnTheLeft" Value="0,8,6,8" />
<Setter Property="Template" Value="{StaticResource ComboBoxTemplate}" />
<Setter Property="hc:TitleElement.MarginOnTheLeft" Value="0,3,6,0" />
<Setter Property="hc:TitleElement.MarginOnTheTop" Value="6,0,0,1" />
<Setter Property="Template" Value="{StaticResource ComboBoxTemplate}" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Validation.ErrorTemplate" Value="{x:Null}" />
<Style.Triggers>
...
...
@@ -339,9 +342,10 @@
<Style x:Key="DataGridEditingTextColumnStyle.Small" BasedOn="{StaticResource DataGridEditingTextColumnStyle}" TargetType="TextBox" >
<Setter Property="MinHeight" Value="20"/>
<Setter Property="Padding" Value="6,2,6,1"/>
<Setter Property="hc:TitleElement.MarginOnTheLeft" Value="0,8,6,0" />
<Setter Property="hc:BorderElement.CornerRadius" Value="{StaticResource DefaultCornerRadius}" />
<Setter Property="Padding" Value="6,0"/>
<Setter Property="hc:TitleElement.MarginOnTheLeft" Value="0,3,6,0" />
<Setter Property="hc:TitleElement.MarginOnTheTop" Value="6,0,0,1" />
<Setter Property="hc:BorderElement.CornerRadius" Value="{StaticResource DefaultCornerRadius}" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="HorizontalContentAlignment" Value="Left" />
<Setter Property="Background" Value="{DynamicResource RegionBrush}" />
...
...
src/Shared/HandyControl_Shared/Themes/Styles/Base/DatePickerBaseStyle.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControl_Shared/Themes/Styles/Base/DateTimePickerBaseStyle.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControl_Shared/Themes/Styles/Base/NumericUpDownBaseStyle.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControl_Shared/Themes/Styles/Base/PasswordBoxBaseStyle.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControl_Shared/Themes/Styles/Base/SearchBarBaseStyle.xaml
浏览文件 @
8e707a66
...
...
@@ -16,7 +16,7 @@
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<ScrollViewer Margin="-2,0" Grid.Row="0" Grid.Column="0" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
<Button Height="
{x:Static system:Double.NaN}" Command="interactivity:ControlCommands.Search" Style="{StaticResource ButtonIcon}" hc:IconElement.Width="14" Padding="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,1,1,1
'}" hc:IconElement.Geometry="{StaticResource SearchGeometry}" Grid.Column="1" Foreground="{TemplateBinding BorderBrush}" Focusable="False" Grid.Row="0"/>
<Button Height="
Auto" Width="Auto" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Command="interactivity:ControlCommands.Search" Style="{StaticResource ButtonIcon}" hc:IconElement.Width="14" Padding="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0
'}" hc:IconElement.Geometry="{StaticResource SearchGeometry}" Grid.Column="1" Foreground="{TemplateBinding BorderBrush}" Focusable="False" Grid.Row="0"/>
</Grid>
</hc:SimplePanel>
<ControlTemplate.Triggers>
...
...
@@ -41,7 +41,7 @@
<RowDefinition Height="Auto"/>
<RowDefinition MinHeight="{Binding Path=(hc:InfoElement.MinContentHeight),RelativeSource={RelativeSource TemplatedParent}}" Height="{Binding Path=(hc:InfoElement.ContentHeight),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Double2GridLengthConverter}}"/>
</Grid.RowDefinitions>
<DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{
TemplateBinding Padding
}">
<DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{
Binding Path=(hc:TitleElement.MarginOnTheTop),RelativeSource={RelativeSource TemplatedParent}
}">
<ContentPresenter DockPanel.Dock="Right" TextElement.Foreground="{DynamicResource DangerBrush}" Margin="4,0,0,0" Content="{Binding Path=(hc:InfoElement.Symbol),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(hc:InfoElement.Necessary),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Boolean2VisibilityConverter}}"/>
<TextBlock hc:TextBlockAttach.AutoTooltip="True" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Text="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent}}"/>
</DockPanel>
...
...
@@ -53,7 +53,7 @@
</Grid.ColumnDefinitions>
<TextBlock VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="{TemplateBinding Text,Converter={StaticResource String2VisibilityReConverter}}" HorizontalAlignment="Stretch" Style="{StaticResource TextBlockDefaultThiLight}" Text="{Binding Path=(hc:InfoElement.Placeholder),RelativeSource={RelativeSource TemplatedParent}}"/>
<ScrollViewer Margin="-2,0" Grid.Column="0" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
<Button Height="
{x:Static system:Double.NaN}" Command="interactivity:ControlCommands.Search" hc:IconElement.Width="14" Padding="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,1,1,1
'}" Grid.Column="1" Style="{StaticResource ButtonIcon}" hc:IconElement.Geometry="{StaticResource SearchGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
<Button Height="
Auto" Width="Auto" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Command="interactivity:ControlCommands.Search" hc:IconElement.Width="14" Padding="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0
'}" Grid.Column="1" Style="{StaticResource ButtonIcon}" hc:IconElement.Geometry="{StaticResource SearchGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
</Grid>
</Grid>
<ControlTemplate.Triggers>
...
...
@@ -88,7 +88,7 @@
</Grid.ColumnDefinitions>
<TextBlock VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}" Visibility="{TemplateBinding Text,Converter={StaticResource String2VisibilityReConverter}}" HorizontalAlignment="Stretch" Style="{StaticResource TextBlockDefaultThiLight}" Text="{Binding Path=(hc:InfoElement.Placeholder),RelativeSource={RelativeSource TemplatedParent}}"/>
<ScrollViewer Margin="-2,0" Grid.Column="0" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
<Button Height="
{x:Static system:Double.NaN}" Command="interactivity:ControlCommands.Search" hc:IconElement.Width="14" Padding="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,1,1,1
'}" Grid.Column="1" Style="{StaticResource ButtonIcon}" hc:IconElement.Geometry="{StaticResource SearchGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
<Button Height="
Auto" Width="Auto" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Command="interactivity:ControlCommands.Search" hc:IconElement.Width="14" Padding="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0
'}" Grid.Column="1" Style="{StaticResource ButtonIcon}" hc:IconElement.Geometry="{StaticResource SearchGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
</Grid>
</Grid>
<ControlTemplate.Triggers>
...
...
@@ -125,7 +125,7 @@
<RowDefinition Height="Auto"/>
<RowDefinition MinHeight="{Binding Path=(hc:InfoElement.MinContentHeight),RelativeSource={RelativeSource TemplatedParent}}" Height="{Binding Path=(hc:InfoElement.ContentHeight),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Double2GridLengthConverter}}"/>
</Grid.RowDefinitions>
<DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{
TemplateBinding Padding
}">
<DockPanel LastChildFill="True" Visibility="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource String2VisibilityConverter}}" HorizontalAlignment="{Binding Path=(hc:TitleElement.HorizontalAlignment),RelativeSource={RelativeSource TemplatedParent}}" Margin="{
Binding Path=(hc:TitleElement.MarginOnTheTop),RelativeSource={RelativeSource TemplatedParent}
}">
<ContentPresenter DockPanel.Dock="Right" TextElement.Foreground="{DynamicResource DangerBrush}" Margin="4,0,0,0" Content="{Binding Path=(hc:InfoElement.Symbol),RelativeSource={RelativeSource TemplatedParent}}" Visibility="{Binding Path=(hc:InfoElement.Necessary),RelativeSource={RelativeSource TemplatedParent},Converter={StaticResource Boolean2VisibilityConverter}}"/>
<TextBlock hc:TextBlockAttach.AutoTooltip="True" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Text="{Binding Path=(hc:InfoElement.Title),RelativeSource={RelativeSource TemplatedParent}}"/>
</DockPanel>
...
...
@@ -136,8 +136,8 @@
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button Height="
{x:Static system:Double.NaN}" Command="interactivity:ControlCommands.Clear" hc:IconElement.Width="14" Padding="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,1,0,1'}
" Visibility="Collapsed" Name="ButtonClear" Grid.Column="1" Style="{StaticResource ButtonIcon}" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
<Button Height="
{x:Static system:Double.NaN}" Command="interactivity:ControlCommands.Search" hc:IconElement.Width="14" Padding="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,1,1,1
'}" Style="{StaticResource ButtonIcon}" hc:IconElement.Geometry="{StaticResource SearchGeometry}" Grid.Column="2" Foreground="{TemplateBinding BorderBrush}" Focusable="False" Grid.Row="0"/>
<Button Height="
Auto" Width="Auto" HorizontalContentAlignment="Left" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Command="interactivity:ControlCommands.Clear" hc:IconElement.Width="14" Padding="0,0,2,0
" Visibility="Collapsed" Name="ButtonClear" Grid.Column="1" Style="{StaticResource ButtonIcon}" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
<Button Height="
Auto" Width="Auto" HorizontalContentAlignment="Left" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Command="interactivity:ControlCommands.Search" hc:IconElement.Width="14" Padding="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0
'}" Style="{StaticResource ButtonIcon}" hc:IconElement.Geometry="{StaticResource SearchGeometry}" Grid.Column="2" Foreground="{TemplateBinding BorderBrush}" Focusable="False" Grid.Row="0"/>
<TextBlock HorizontalAlignment="Stretch" Text="{Binding Path=(hc:InfoElement.Placeholder),RelativeSource={RelativeSource TemplatedParent}}" Grid.Row="0" Grid.Column="0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Style="{StaticResource TextBlockDefaultThiLight}" Margin="{TemplateBinding Padding}" Visibility="{TemplateBinding Text,Converter={StaticResource String2VisibilityReConverter}}"/>
<ScrollViewer Margin="-2,0" Grid.Row="0" Grid.Column="0" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
</Grid>
...
...
@@ -180,8 +180,8 @@
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Button Height="
{x:Static system:Double.NaN}" Command="interactivity:ControlCommands.Clear" hc:IconElement.Width="14" Padding="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,1,0,1'}
" Visibility="Collapsed" Name="ButtonClear" Grid.Column="1" Style="{StaticResource ButtonIcon}" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
<Button Height="
{x:Static system:Double.NaN}" Command="interactivity:ControlCommands.Search" hc:IconElement.Width="14" Padding="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,1,1,1
'}" Style="{StaticResource ButtonIcon}" hc:IconElement.Geometry="{StaticResource SearchGeometry}" Grid.Column="2" Foreground="{TemplateBinding BorderBrush}" Focusable="False" Grid.Row="0"/>
<Button Height="
Auto" Width="Auto" HorizontalContentAlignment="Left" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Command="interactivity:ControlCommands.Clear" hc:IconElement.Width="14" Padding="0,0,2,0
" Visibility="Collapsed" Name="ButtonClear" Grid.Column="1" Style="{StaticResource ButtonIcon}" hc:IconElement.Geometry="{StaticResource DeleteFillCircleGeometry}" Foreground="{TemplateBinding BorderBrush}"/>
<Button Height="
Auto" Width="Auto" HorizontalContentAlignment="Left" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Command="interactivity:ControlCommands.Search" hc:IconElement.Width="14" Padding="{Binding Padding, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource ThicknessSplitConverter}, ConverterParameter='0,0,1,0
'}" Style="{StaticResource ButtonIcon}" hc:IconElement.Geometry="{StaticResource SearchGeometry}" Grid.Column="2" Foreground="{TemplateBinding BorderBrush}" Focusable="False" Grid.Row="0"/>
<TextBlock HorizontalAlignment="Stretch" Text="{Binding Path=(hc:InfoElement.Placeholder),RelativeSource={RelativeSource TemplatedParent}}" Grid.Row="0" Grid.Column="0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Style="{StaticResource TextBlockDefaultThiLight}" Margin="{TemplateBinding Padding}" Visibility="{TemplateBinding Text,Converter={StaticResource String2VisibilityReConverter}}"/>
<ScrollViewer Margin="-2,0" Grid.Row="0" Grid.Column="0" Padding="{TemplateBinding Padding}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
</Grid>
...
...
src/Shared/HandyControl_Shared/Themes/Styles/Base/TabControlBaseStyle.xaml
浏览文件 @
8e707a66
...
...
@@ -31,7 +31,7 @@
</MultiDataTrigger.Conditions>
<Setter Property="Panel.ZIndex" Value="1" />
<Setter Property="TextElement.Foreground" Value="{DynamicResource PrimaryBrush}" TargetName="contentPresenter" />
<Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,
3
" />
<Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,0,
2
" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
...
...
@@ -40,7 +40,7 @@
</MultiDataTrigger.Conditions>
<Setter Property="Panel.ZIndex" Value="1" />
<Setter Property="TextElement.Foreground" Value="{DynamicResource PrimaryBrush}" TargetName="contentPresenter" />
<Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,
3
,0" />
<Setter Property="BorderThickness" TargetName="mainBorder" Value="0,0,
2
,0" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
...
...
@@ -49,7 +49,7 @@
</MultiDataTrigger.Conditions>
<Setter Property="Panel.ZIndex" Value="1" />
<Setter Property="TextElement.Foreground" Value="{DynamicResource PrimaryBrush}" TargetName="contentPresenter" />
<Setter Property="BorderThickness" TargetName="mainBorder" Value="0,
3
,0,0" />
<Setter Property="BorderThickness" TargetName="mainBorder" Value="0,
2
,0,0" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
...
...
@@ -58,7 +58,7 @@
</MultiDataTrigger.Conditions>
<Setter Property="Panel.ZIndex" Value="1" />
<Setter Property="TextElement.Foreground" Value="{DynamicResource PrimaryBrush}" TargetName="contentPresenter" />
<Setter Property="BorderThickness" TargetName="mainBorder" Value="
3
,0,0,0" />
<Setter Property="BorderThickness" TargetName="mainBorder" Value="
2
,0,0,0" />
</MultiDataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
...
...
src/Shared/HandyControl_Shared/Themes/Styles/Base/TextBoxBaseStyle.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControl_Shared/Themes/Styles/Base/TimePickerBaseStyle.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControl_Shared/Themes/Styles/Base/ToggleButtonBaseStyle.xaml
浏览文件 @
8e707a66
...
...
@@ -164,7 +164,7 @@
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Opacity="0" x:Name="lightBorder" Background="{Binding Path=(hc:VisualElement.HighlightBrush),RelativeSource={RelativeSource TemplatedParent}}" CornerRadius="24">
<hc:ToggleBlock HorizontalAlignment="Left" Margin="18 0 0 0" IsChecked="{Binding Path=(hc:ToggleButtonAttach.ShowLabel),RelativeSource={RelativeSource TemplatedParent}}">
<hc:ToggleBlock.CheckedContent>
<Rectangle Width="
2" Height="16
" Fill="{DynamicResource TextIconBrush}" />
<Rectangle Width="
3" Height="16" RadiusX="1.5" RadiusY="1.5
" Fill="{DynamicResource TextIconBrush}" />
</hc:ToggleBlock.CheckedContent>
</hc:ToggleBlock>
</Border>
...
...
src/Shared/HandyControl_Shared/Themes/Styles/CheckComboBox.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControl_Shared/Themes/Styles/ComboBox.xaml
浏览文件 @
8e707a66
...
...
@@ -22,7 +22,8 @@
<Setter Property="hc:InfoElement.MinContentHeight" Value="20"/>
<Setter Property="hc:InfoElement.ContentHeight" Value="20"/>
<Setter Property="hc:TitleElement.MarginOnTheLeft" Value="0,3,6,0"/>
<Setter Property="Padding" Value="6,2,6,1"/>
<Setter Property="hc:TitleElement.MarginOnTheTop" Value="6,0,0,1" />
<Setter Property="Padding" Value="6,0"/>
<Setter Property="MinHeight" Value="20"/>
</Style>
...
...
@@ -33,7 +34,8 @@
<Setter Property="hc:InfoElement.MinContentHeight" Value="20"/>
<Setter Property="hc:InfoElement.ContentHeight" Value="20"/>
<Setter Property="hc:TitleElement.MarginOnTheLeft" Value="0,3,6,0"/>
<Setter Property="Padding" Value="6,2,6,1"/>
<Setter Property="hc:TitleElement.MarginOnTheTop" Value="6,0,0,1" />
<Setter Property="Padding" Value="6,0" />
<Setter Property="MinHeight" Value="20"/>
</Style>
...
...
src/Shared/HandyControl_Shared/Themes/Styles/DataGrid.xaml
浏览文件 @
8e707a66
...
...
@@ -114,7 +114,7 @@
<Style BasedOn="{StaticResource DataGridBaseStyle}" TargetType="DataGrid"/>
<Style x:Key="DataGridCellStyle.Small" BasedOn="{StaticResource DataGridCellStyle}" TargetType="DataGridCell">
<Setter Property="Padding" Value="6,
2
"/>
<Setter Property="Padding" Value="6,
0
"/>
</Style>
<Style x:Key="DataGridRowStyle.Small" BasedOn="{StaticResource DataGridRowStyle}" TargetType="DataGridRow">
...
...
src/Shared/HandyControl_Shared/Themes/Styles/DatePicker.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControl_Shared/Themes/Styles/DateTimePicker.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControl_Shared/Themes/Styles/NumericUpDown.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControl_Shared/Themes/Styles/PasswordBox.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControl_Shared/Themes/Styles/SearchBar.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControl_Shared/Themes/Styles/TextBox.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControl_Shared/Themes/Styles/TimePicker.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControl_Shared/Themes/Theme.xaml
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
src/Shared/HandyControl_Shared/Tools/Converter/ThicknessSplitConverter.cs
浏览文件 @
8e707a66
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录