Skip to content

Commit e16ea22

Browse files
committed
feat: improve ImageToggledButton and add AuthenticationButton and ConnectivityButton
1 parent 4a99e96 commit e16ea22

27 files changed

+1009
-328
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<UserControl
2+
x:Class="Atc.Wpf.Sample.SamplesWpfControls.ButtonControls.AuthenticationButtonView"
3+
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
4+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
5+
xmlns:atc="https://github.com/atc-net/atc-wpf/tree/main/schemas"
6+
xmlns:atcValueConverters="https://github.com/atc-net/atc-wpf/tree/main/schemas/value-converters"
7+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
8+
xmlns:fontIcons="clr-namespace:Atc.Wpf.FontIcons;assembly=Atc.Wpf.FontIcons"
9+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
10+
d:DesignHeight="450"
11+
d:DesignWidth="800"
12+
mc:Ignorable="d">
13+
14+
<atc:AutoGrid Columns="*" Rows="Auto,*">
15+
16+
<GroupBox
17+
Margin="0,0,0,10"
18+
Padding="10"
19+
Header="Features" />
20+
21+
<GroupBox Header="Usage">
22+
<ScrollViewer>
23+
<atc:GridEx Columns="*,10,*" ShowGridLines="True">
24+
<atc:UniformSpacingPanel
25+
Grid.Column="0"
26+
Margin="10"
27+
Orientation="Vertical"
28+
Spacing="10">
29+
30+
<atc:UniformSpacingPanel
31+
ItemWidth="100"
32+
Orientation="Horizontal"
33+
Spacing="10">
34+
35+
<atc:UniformSpacingPanel Orientation="Vertical" Spacing="10">
36+
37+
<atc:AuthenticationButton
38+
IsAuthenticated="{Binding Path=IsAuthenticated}"
39+
IsBusy="{Binding Path=IsBusy}"
40+
LoginCommand="{Binding Path=LoginCommand}"
41+
LogoutCommand="{Binding Path=LogoutCommand}" />
42+
43+
<atc:AuthenticationButton
44+
IsAuthenticated="{Binding Path=IsAuthenticated}"
45+
IsBusy="{Binding Path=IsBusy}"
46+
LoginCommand="{Binding Path=LoginCommand}"
47+
LoginContent="MyLogin"
48+
LoginImageSource="{Binding Source={x:Static fontIcons:FontMaterialDesignType.Login}, Converter={x:Static atcValueConverters:FontIconImageSourceValueConverter.Instance}, ConverterParameter={StaticResource AtcApps.Brushes.ThemeForeground}}"
49+
LogoutCommand="{Binding Path=LogoutCommand}"
50+
LogoutContent="MyLogout"
51+
LogoutImageSource="{Binding Source={x:Static fontIcons:FontMaterialDesignType.Logout}, Converter={x:Static atcValueConverters:FontIconImageSourceValueConverter.Instance}, ConverterParameter={StaticResource AtcApps.Brushes.Accent}}" />
52+
53+
</atc:UniformSpacingPanel>
54+
55+
</atc:UniformSpacingPanel>
56+
57+
</atc:UniformSpacingPanel>
58+
<atc:UniformSpacingPanel
59+
Grid.Column="2"
60+
Margin="10"
61+
Orientation="Vertical"
62+
Spacing="10">
63+
64+
<atc:UniformSpacingPanel
65+
ItemWidth="100"
66+
Orientation="Horizontal"
67+
Spacing="10">
68+
69+
<atc:UniformSpacingPanel Orientation="Vertical" Spacing="10" />
70+
71+
</atc:UniformSpacingPanel>
72+
73+
</atc:UniformSpacingPanel>
74+
</atc:GridEx>
75+
</ScrollViewer>
76+
</GroupBox>
77+
</atc:AutoGrid>
78+
79+
</UserControl>
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
namespace Atc.Wpf.Sample.SamplesWpfControls.ButtonControls;
2+
3+
public partial class AuthenticationButtonView
4+
{
5+
public AuthenticationButtonView()
6+
{
7+
InitializeComponent();
8+
9+
DataContext = this;
10+
}
11+
12+
[DependencyProperty]
13+
private bool isBusy;
14+
15+
[DependencyProperty]
16+
private bool isAuthenticated;
17+
18+
[RelayCommand]
19+
private async Task Login()
20+
{
21+
IsBusy = true;
22+
23+
await Task
24+
.Delay(2_000)
25+
.ConfigureAwait(false);
26+
27+
await Application.Current.Dispatcher
28+
.InvokeAsyncIfRequired(() =>
29+
{
30+
IsAuthenticated = true;
31+
IsBusy = false;
32+
})
33+
.ConfigureAwait(false);
34+
}
35+
36+
[RelayCommand]
37+
private async Task Logout()
38+
{
39+
IsBusy = true;
40+
41+
await Task
42+
.Delay(500)
43+
.ConfigureAwait(false);
44+
45+
await Application.Current.Dispatcher
46+
.InvokeAsyncIfRequired(() =>
47+
{
48+
IsAuthenticated = false;
49+
IsBusy = false;
50+
})
51+
.ConfigureAwait(false);
52+
}
53+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<UserControl
2+
x:Class="Atc.Wpf.Sample.SamplesWpfControls.ButtonControls.ConnectivityButtonView"
3+
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
4+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
5+
xmlns:atc="https://github.com/atc-net/atc-wpf/tree/main/schemas"
6+
xmlns:atcValueConverters="https://github.com/atc-net/atc-wpf/tree/main/schemas/value-converters"
7+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
8+
xmlns:fontIcons="clr-namespace:Atc.Wpf.FontIcons;assembly=Atc.Wpf.FontIcons"
9+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
10+
d:DesignHeight="450"
11+
d:DesignWidth="800"
12+
mc:Ignorable="d">
13+
14+
<atc:AutoGrid Columns="*" Rows="Auto,*">
15+
16+
<GroupBox
17+
Margin="0,0,0,10"
18+
Padding="10"
19+
Header="Features" />
20+
21+
<GroupBox Header="Usage">
22+
<ScrollViewer>
23+
<atc:GridEx Columns="*,10,*" ShowGridLines="True">
24+
<atc:UniformSpacingPanel
25+
Grid.Column="0"
26+
Margin="10"
27+
Orientation="Vertical"
28+
Spacing="10">
29+
30+
<atc:UniformSpacingPanel
31+
ItemWidth="100"
32+
Orientation="Horizontal"
33+
Spacing="10">
34+
35+
<atc:UniformSpacingPanel Orientation="Vertical" Spacing="10">
36+
37+
<atc:ConnectivityButton
38+
ConnectCommand="{Binding Path=ConnectCommand}"
39+
DisconnectCommand="{Binding Path=DisconnectCommand}"
40+
IsBusy="{Binding Path=IsBusy}"
41+
IsConnected="{Binding Path=IsConnected}" />
42+
43+
<atc:ConnectivityButton
44+
ConnectCommand="{Binding Path=ConnectCommand}"
45+
ConnectContent="MyConnect"
46+
ConnectImageSource="{Binding Source={x:Static fontIcons:FontMaterialDesignType.Login}, Converter={x:Static atcValueConverters:FontIconImageSourceValueConverter.Instance}, ConverterParameter={StaticResource AtcApps.Brushes.ThemeForeground}}"
47+
DisconnectCommand="{Binding Path=DisconnectCommand}"
48+
DisconnectContent="MyDisconnect"
49+
DisconnectImageSource="{Binding Source={x:Static fontIcons:FontMaterialDesignType.Logout}, Converter={x:Static atcValueConverters:FontIconImageSourceValueConverter.Instance}, ConverterParameter={StaticResource AtcApps.Brushes.Accent}}"
50+
IsBusy="{Binding Path=IsBusy}"
51+
IsConnected="{Binding Path=IsConnected}" />
52+
53+
</atc:UniformSpacingPanel>
54+
55+
</atc:UniformSpacingPanel>
56+
57+
</atc:UniformSpacingPanel>
58+
<atc:UniformSpacingPanel
59+
Grid.Column="2"
60+
Margin="10"
61+
Orientation="Vertical"
62+
Spacing="10">
63+
64+
<atc:UniformSpacingPanel
65+
ItemWidth="100"
66+
Orientation="Horizontal"
67+
Spacing="10">
68+
69+
<atc:UniformSpacingPanel Orientation="Vertical" Spacing="10" />
70+
71+
</atc:UniformSpacingPanel>
72+
73+
</atc:UniformSpacingPanel>
74+
</atc:GridEx>
75+
</ScrollViewer>
76+
</GroupBox>
77+
</atc:AutoGrid>
78+
79+
</UserControl>

sample/Atc.Wpf.Sample/SamplesWpfTheming/InputButton/ImageToggledButton.xaml.cs renamed to sample/Atc.Wpf.Sample/SamplesWpfControls/ButtonControls/ConnectivityButtonView.xaml.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
namespace Atc.Wpf.Sample.SamplesWpfTheming.InputButton;
1+
namespace Atc.Wpf.Sample.SamplesWpfControls.ButtonControls;
22

3-
public partial class ImageToggledButton
3+
public partial class ConnectivityButtonView
44
{
5-
public ImageToggledButton()
5+
public ConnectivityButtonView()
66
{
77
InitializeComponent();
88

sample/Atc.Wpf.Sample/SamplesWpfControls/BaseControls/ImageButtonView.xaml renamed to sample/Atc.Wpf.Sample/SamplesWpfControls/ButtonControls/ImageButtonView.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<UserControl
2-
x:Class="Atc.Wpf.Sample.SamplesWpfControls.BaseControls.ImageButtonView"
2+
x:Class="Atc.Wpf.Sample.SamplesWpfControls.ButtonControls.ImageButtonView"
33
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
44
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
55
xmlns:atc="https://github.com/atc-net/atc-wpf/tree/main/schemas"

sample/Atc.Wpf.Sample/SamplesWpfControls/BaseControls/ImageButtonView.xaml.cs renamed to sample/Atc.Wpf.Sample/SamplesWpfControls/ButtonControls/ImageButtonView.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
namespace Atc.Wpf.Sample.SamplesWpfControls.BaseControls;
1+
namespace Atc.Wpf.Sample.SamplesWpfControls.ButtonControls;
22

33
public partial class ImageButtonView
44
{

sample/Atc.Wpf.Sample/SamplesWpfTheming/InputButton/ImageToggledButton.xaml renamed to sample/Atc.Wpf.Sample/SamplesWpfControls/ButtonControls/ImageToggledButtonView.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<UserControl
2-
x:Class="Atc.Wpf.Sample.SamplesWpfTheming.InputButton.ImageToggledButton"
2+
x:Class="Atc.Wpf.Sample.SamplesWpfControls.ButtonControls.ImageToggledButtonView"
33
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
44
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
55
xmlns:atc="https://github.com/atc-net/atc-wpf/tree/main/schemas"
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
namespace Atc.Wpf.Sample.SamplesWpfControls.ButtonControls;
2+
3+
public partial class ImageToggledButtonView
4+
{
5+
public ImageToggledButtonView()
6+
{
7+
InitializeComponent();
8+
9+
DataContext = this;
10+
}
11+
12+
[DependencyProperty]
13+
private bool isBusy;
14+
15+
[DependencyProperty]
16+
private bool isConnected;
17+
18+
[RelayCommand]
19+
private async Task Connect()
20+
{
21+
IsBusy = true;
22+
23+
await Task
24+
.Delay(2_000)
25+
.ConfigureAwait(false);
26+
27+
await Application.Current.Dispatcher
28+
.InvokeAsyncIfRequired(() =>
29+
{
30+
IsConnected = true;
31+
IsBusy = false;
32+
})
33+
.ConfigureAwait(false);
34+
}
35+
36+
[RelayCommand]
37+
private async Task Disconnect()
38+
{
39+
IsBusy = true;
40+
41+
await Task
42+
.Delay(500)
43+
.ConfigureAwait(false);
44+
45+
await Application.Current.Dispatcher
46+
.InvokeAsyncIfRequired(() =>
47+
{
48+
IsConnected = false;
49+
IsBusy = false;
50+
})
51+
.ConfigureAwait(false);
52+
}
53+
}

sample/Atc.Wpf.Sample/SamplesWpfControlsTreeView.xaml

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
IsExpanded="True"
1616
SamplePath="DialogBoxes.StandardDialogBoxView" />
1717
</TreeViewItem>
18+
1819
<TreeViewItem Header="Base Controls">
1920
<sample:SampleTreeViewItem
2021
Header="DecimalBox"
@@ -24,10 +25,6 @@
2425
Header="DecimalXyBox"
2526
IsExpanded="True"
2627
SamplePath="BaseControls.DecimalXyBoxView" />
27-
<sample:SampleTreeViewItem
28-
Header="ImageButton"
29-
IsExpanded="True"
30-
SamplePath="BaseControls.ImageButtonView" />
3128
<sample:SampleTreeViewItem
3229
Header="IntegerBox"
3330
IsExpanded="True"
@@ -66,6 +63,25 @@
6663
SamplePath="BaseControls.RichTextBoxExView" />
6764
</TreeViewItem>
6865

66+
<TreeViewItem Header="Button Controls">
67+
<sample:SampleTreeViewItem
68+
Header="AuthenticationButton"
69+
IsExpanded="True"
70+
SamplePath="ButtonControls.AuthenticationButtonView" />
71+
<sample:SampleTreeViewItem
72+
Header="ConnectivityButton"
73+
IsExpanded="True"
74+
SamplePath="ButtonControls.ConnectivityButtonView" />
75+
<sample:SampleTreeViewItem
76+
Header="ImageButton"
77+
IsExpanded="True"
78+
SamplePath="ButtonControls.ImageButtonView" />
79+
<sample:SampleTreeViewItem
80+
Header="ImageToggledButton"
81+
IsExpanded="True"
82+
SamplePath="ButtonControls.ImageToggledButtonView" />
83+
</TreeViewItem>
84+
6985
<TreeViewItem Header="Color Controls">
7086
<sample:SampleTreeViewItem
7187
Header="AdvancedColorPickerView"

sample/Atc.Wpf.Sample/SamplesWpfThemingTreeView.xaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,6 @@
2929
Header="ImageButton"
3030
IsExpanded="True"
3131
SamplePath="InputButton.ImageButtonView" />
32-
<sample:SampleTreeViewItem
33-
Header="ImageToggledButton"
34-
IsExpanded="True"
35-
SamplePath="InputButton.ImageToggledButton" />
3632
<TreeViewItem
3733
Header="ToggleButton"
3834
IsEnabled="False"

src/Atc.Wpf.Controls/AssemblyInfo.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
[assembly: XmlnsPrefix("https://github.com/atc-net/atc-wpf/tree/main/schemas", "atc")]
55
[assembly: XmlnsDefinition("https://github.com/atc-net/atc-wpf/tree/main/schemas", "Atc.Wpf.Controls")]
66
[assembly: XmlnsDefinition("https://github.com/atc-net/atc-wpf/tree/main/schemas", "Atc.Wpf.Controls.BaseControls")]
7+
[assembly: XmlnsDefinition("https://github.com/atc-net/atc-wpf/tree/main/schemas", "Atc.Wpf.Controls.ButtonControls")]
8+
[assembly: XmlnsDefinition("https://github.com/atc-net/atc-wpf/tree/main/schemas", "Atc.Wpf.Controls.ColorControls")]
79
[assembly: XmlnsDefinition("https://github.com/atc-net/atc-wpf/tree/main/schemas", "Atc.Wpf.Controls.Dialogs")]
810
[assembly: XmlnsDefinition("https://github.com/atc-net/atc-wpf/tree/main/schemas", "Atc.Wpf.Controls.LabelControls")]
911
[assembly: XmlnsDefinition("https://github.com/atc-net/atc-wpf/tree/main/schemas", "Atc.Wpf.Controls.Layouts")]

src/Atc.Wpf.Controls/Atc.Wpf.Controls.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
44
<TargetFramework>net9.0-windows</TargetFramework>

0 commit comments

Comments
 (0)