Skip to content

Commit 3cc99f0

Browse files
committed
丰富个人信息展示
1 parent 3ec59ab commit 3cc99f0

18 files changed

Lines changed: 413 additions & 99 deletions

File tree

src/App/App.csproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
<Compile Include="$(SolutionDir)\src\Shared\SharedAssemblyInfo.cs">
2020
<Link>Properties\SharedAssemblyInfo.cs</Link>
2121
</Compile>
22+
<Compile Include="Controls\User\AccountPanel.xaml.cs">
23+
<DependentUpon>AccountPanel.xaml</DependentUpon>
24+
</Compile>
2225
<Compile Include="Controls\App\BubbleView\Bubble.cs" />
2326
<Compile Include="Controls\App\BubbleView\BubbleView.cs" />
2427
<Compile Include="Controls\App\BubbleView\BubbleView.Properties.cs" />
@@ -377,6 +380,10 @@
377380
<Generator>MSBuild:Compile</Generator>
378381
<SubType>Designer</SubType>
379382
</ApplicationDefinition>
383+
<Page Include="Controls\User\AccountPanel.xaml">
384+
<SubType>Designer</SubType>
385+
<Generator>MSBuild:Compile</Generator>
386+
</Page>
380387
<Page Include="Controls\App\AppTitleBar.xaml">
381388
<SubType>Designer</SubType>
382389
<Generator>MSBuild:Compile</Generator>

src/App/Controls/User/AccountAvatar.xaml

Lines changed: 53 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -4,103 +4,67 @@
44
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
55
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
66
xmlns:ext="using:Richasy.Bili.App.Resources.Extension"
7+
xmlns:icons="using:Richasy.FluentIcon.Uwp"
78
xmlns:loc="using:Richasy.Bili.Locator.Uwp"
89
xmlns:local="using:Richasy.Bili.App.Controls"
910
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
10-
xmlns:muxc="using:Microsoft.UI.Xaml.Controls" xmlns:icons="using:Richasy.FluentIcon.Uwp"
11+
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
1112
d:DesignHeight="300"
1213
d:DesignWidth="400"
1314
mc:Ignorable="d">
1415

1516
<UserControl.Resources>
16-
<muxc:CommandBarFlyout x:Key="AvatarFlyout" Placement="Bottom">
17-
<muxc:CommandBarFlyout.SecondaryCommands>
18-
<AppBarElementContainer>
19-
<Grid
20-
MinWidth="260"
21-
MaxWidth="320"
22-
Padding="12,8"
23-
ColumnSpacing="12">
24-
<Grid.ColumnDefinitions>
25-
<ColumnDefinition Width="Auto" />
26-
<ColumnDefinition Width="*" />
27-
</Grid.ColumnDefinitions>
28-
<local:UserAvatar
29-
Width="40"
30-
Height="40"
31-
Avatar="{x:Bind ViewModel.Avatar, Mode=OneWay}"
32-
DecodeSize="80"
33-
UserName="{x:Bind ViewModel.DisplayName, Mode=OneWay}" />
34-
<StackPanel
35-
Grid.Column="1"
36-
VerticalAlignment="Center"
37-
Spacing="4">
38-
<TextBlock
39-
Style="{StaticResource BodyTextBlockStyle}"
40-
HorizontalAlignment="Left"
41-
Text="{x:Bind ViewModel.DisplayName, Mode=OneWay}"
42-
TextTrimming="CharacterEllipsis" />
43-
<Image
44-
Height="10"
45-
HorizontalAlignment="Left"
46-
Source="{x:Bind ViewModel.Level, Mode=OneWay, Converter={StaticResource UserLevelConverter}}" />
47-
</StackPanel>
48-
</Grid>
49-
</AppBarElementContainer>
50-
<AppBarSeparator />
51-
<AppBarButton Click="OnNavigateToMyHomePageButtonClickAsync" Label="{loc:LocaleLocator Name=MyWebPage}">
52-
<AppBarButton.Icon>
53-
<icons:RegularFluentIcon Symbol="Globe16" />
54-
</AppBarButton.Icon>
55-
</AppBarButton>
56-
<AppBarButton
57-
ext:NavigationExtension.PageId="DynamicFeed"
58-
Click="OnNavigateButtonClick"
59-
Label="{loc:LocaleLocator Name=DynamicFeed}">
60-
<AppBarButton.Icon>
61-
<icons:RegularFluentIcon Symbol="DesignIdeas16" />
62-
</AppBarButton.Icon>
63-
</AppBarButton>
64-
<AppBarButton
65-
ext:NavigationExtension.PageId="Message"
66-
Click="OnNavigateButtonClick"
67-
Label="{loc:LocaleLocator Name=Message}">
68-
<AppBarButton.Icon>
69-
<icons:RegularFluentIcon Symbol="Chat16" />
70-
</AppBarButton.Icon>
71-
</AppBarButton>
72-
<AppBarButton
73-
ext:NavigationExtension.PageId="MyFavorite"
74-
Click="OnNavigateButtonClick"
75-
Label="{loc:LocaleLocator Name=MyFavorite}">
76-
<AppBarButton.Icon>
77-
<icons:RegularFluentIcon Symbol="StarLineHorizontal320" />
78-
</AppBarButton.Icon>
79-
</AppBarButton>
80-
<AppBarButton
81-
ext:NavigationExtension.PageId="SeeLater"
82-
Click="OnNavigateButtonClick"
83-
Label="{loc:LocaleLocator Name=SeeLater}">
84-
<AppBarButton.Icon>
85-
<icons:RegularFluentIcon Symbol="CalendarClock16" />
86-
</AppBarButton.Icon>
87-
</AppBarButton>
88-
<AppBarButton
89-
ext:NavigationExtension.PageId="ViewHistory"
90-
Click="OnNavigateButtonClick"
91-
Label="{loc:LocaleLocator Name=ViewHistory}">
92-
<AppBarButton.Icon>
93-
<icons:RegularFluentIcon Symbol="History20" />
94-
</AppBarButton.Icon>
95-
</AppBarButton>
96-
<AppBarSeparator />
97-
<AppBarButton Click="OnSignOutButtonClickAsync" Label="{loc:LocaleLocator Name=SignOut}">
98-
<AppBarButton.Icon>
99-
<icons:RegularFluentIcon Foreground="{ThemeResource SystemFillColorCriticalBrush}" Symbol="SignOut20" />
100-
</AppBarButton.Icon>
101-
</AppBarButton>
102-
</muxc:CommandBarFlyout.SecondaryCommands>
103-
</muxc:CommandBarFlyout>
17+
<Flyout
18+
x:Key="AvatarFlyout"
19+
FlyoutPresenterStyle="{StaticResource ThinPaddingFlyoutPresenterStyle}"
20+
Placement="Bottom">
21+
<Grid>
22+
<Grid.RowDefinitions>
23+
<RowDefinition Height="Auto" />
24+
<RowDefinition Height="Auto" />
25+
</Grid.RowDefinitions>
26+
<local:AccountPanel MinWidth="280" RequestCloseFlyout="OnRequestCloseFlyout" />
27+
<StackPanel Grid.Row="1" Spacing="4">
28+
<StackPanel.Resources>
29+
<Style BasedOn="{StaticResource DefaultButtonStyle}" TargetType="Button">
30+
<Setter Property="HorizontalAlignment" Value="Stretch" />
31+
<Setter Property="HorizontalContentAlignment" Value="Left" />
32+
<Setter Property="Background" Value="Transparent" />
33+
<Setter Property="BorderThickness" Value="0" />
34+
<Setter Property="Padding" Value="12,8" />
35+
</Style>
36+
</StackPanel.Resources>
37+
<Button Click="OnNavigateToMyHomePageButtonClickAsync">
38+
<local:IconTextBlock Symbol="Globe16" Text="{loc:LocaleLocator Name=MyWebPage}" />
39+
</Button>
40+
<Button ext:NavigationExtension.PageId="DynamicFeed" Click="OnNavigateButtonClick">
41+
<local:IconTextBlock Symbol="DesignIdeas16" Text="{loc:LocaleLocator Name=DynamicFeed}" />
42+
</Button>
43+
<Button ext:NavigationExtension.PageId="Message" Click="OnNavigateButtonClick">
44+
<local:IconTextBlock Symbol="Chat16" Text="{loc:LocaleLocator Name=Message}" />
45+
</Button>
46+
<Button ext:NavigationExtension.PageId="MyFavorite" Click="OnNavigateButtonClick">
47+
<local:IconTextBlock Symbol="StarLineHorizontal320" Text="{loc:LocaleLocator Name=MyFavorite}" />
48+
</Button>
49+
<Button ext:NavigationExtension.PageId="SeeLater" Click="OnNavigateButtonClick">
50+
<local:IconTextBlock Symbol="CalendarClock16" Text="{loc:LocaleLocator Name=SeeLater}" />
51+
</Button>
52+
<Button ext:NavigationExtension.PageId="ViewHistory" Click="OnNavigateButtonClick">
53+
<local:IconTextBlock Symbol="History20" Text="{loc:LocaleLocator Name=ViewHistory}" />
54+
</Button>
55+
<StackPanel
56+
Height="1"
57+
HorizontalAlignment="Stretch"
58+
Background="{ThemeResource ControlStrokeColorDefaultBrush}" />
59+
<Button Click="OnSignOutButtonClickAsync">
60+
<local:IconTextBlock
61+
Foreground="{ThemeResource SystemFillColorCriticalBrush}"
62+
Symbol="SignOut20"
63+
Text="{loc:LocaleLocator Name=SignOut}" />
64+
</Button>
65+
</StackPanel>
66+
</Grid>
67+
</Flyout>
10468
</UserControl.Resources>
10569

10670
<Grid ToolTipService.ToolTip="{x:Bind ViewModel.TipText, Mode=OneWay}">

src/App/Controls/User/AccountAvatar.xaml.cs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,21 +90,32 @@ private async void OnUserAvatarTappedAsync(object sender, Windows.UI.Xaml.Input.
9090

9191
private void OnNavigateButtonClick(object sender, RoutedEventArgs e)
9292
{
93-
var btn = sender as AppBarButton;
93+
var btn = sender as FrameworkElement;
9494
var pageId = NavigationExtension.GetPageId(btn);
9595
AppViewModel.Instance.SetOverlayContentId(pageId);
96+
HideFlyout();
9697
}
9798

9899
private async void OnSignOutButtonClickAsync(object sender, RoutedEventArgs e)
99100
{
100-
FlyoutBase.GetAttachedFlyout(UserAvatar).Hide();
101+
HideFlyout();
101102
await AccountViewModel.Instance.SignOutAsync();
102103
}
103104

104105
private async void OnNavigateToMyHomePageButtonClickAsync(object sender, RoutedEventArgs e)
105106
{
106-
FlyoutBase.GetAttachedFlyout(UserAvatar).Hide();
107+
HideFlyout();
107108
await Launcher.LaunchUriAsync(new Uri($"https://space.bilibili.com/{AccountViewModel.Instance.Mid}/")).AsTask();
108109
}
110+
111+
private void OnRequestCloseFlyout(object sender, EventArgs e)
112+
{
113+
HideFlyout();
114+
}
115+
116+
private void HideFlyout()
117+
{
118+
FlyoutBase.GetAttachedFlyout(UserAvatar).Hide();
119+
}
109120
}
110121
}
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
<UserControl
2+
x:Class="Richasy.Bili.App.Controls.AccountPanel"
3+
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
4+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
5+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
6+
xmlns:loc="using:Richasy.Bili.Locator.Uwp"
7+
xmlns:local="using:Richasy.Bili.App.Controls"
8+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
9+
d:DesignHeight="300"
10+
d:DesignWidth="400"
11+
mc:Ignorable="d">
12+
13+
<UserControl.Resources>
14+
<Style
15+
x:Key="BasicButtonStyle"
16+
BasedOn="{StaticResource DefaultButtonStyle}"
17+
TargetType="Button">
18+
<Setter Property="HorizontalAlignment" Value="Stretch" />
19+
<Setter Property="BorderThickness" Value="0" />
20+
<Setter Property="Background" Value="Transparent" />
21+
</Style>
22+
</UserControl.Resources>
23+
24+
<Grid
25+
Padding="12,8"
26+
HorizontalAlignment="Stretch"
27+
RowSpacing="12">
28+
<Grid.RowDefinitions>
29+
<RowDefinition Height="Auto" />
30+
<RowDefinition Height="Auto" />
31+
</Grid.RowDefinitions>
32+
<Grid ColumnSpacing="12">
33+
<Grid.ColumnDefinitions>
34+
<ColumnDefinition Width="Auto" />
35+
<ColumnDefinition Width="*" />
36+
<ColumnDefinition Width="Auto" />
37+
</Grid.ColumnDefinitions>
38+
<local:UserAvatar
39+
Width="40"
40+
Height="40"
41+
Avatar="{x:Bind ViewModel.Avatar, Mode=OneWay}"
42+
DecodeSize="80"
43+
UserName="{x:Bind ViewModel.DisplayName, Mode=OneWay}" />
44+
<StackPanel
45+
Grid.Column="1"
46+
VerticalAlignment="Center"
47+
Spacing="4">
48+
<TextBlock
49+
Style="{StaticResource BodyTextBlockStyle}"
50+
HorizontalAlignment="Left"
51+
Text="{x:Bind ViewModel.DisplayName, Mode=OneWay}"
52+
TextTrimming="CharacterEllipsis" />
53+
<Image
54+
Height="10"
55+
HorizontalAlignment="Left"
56+
Source="{x:Bind ViewModel.Level, Mode=OneWay, Converter={StaticResource UserLevelConverter}}" />
57+
</StackPanel>
58+
59+
<Border
60+
x:Name="VipContainer"
61+
Grid.Column="2"
62+
Padding="4"
63+
VerticalAlignment="Center"
64+
BorderBrush="{ThemeResource AccentFillColorDefaultBrush}"
65+
BorderThickness="1"
66+
CornerRadius="{StaticResource ControlCornerRadius}"
67+
Visibility="{x:Bind ViewModel.IsVip, Mode=OneWay}">
68+
<TextBlock
69+
FontSize="10"
70+
Foreground="{ThemeResource AccentTextFillColorPrimaryBrush}"
71+
Text="{loc:LocaleLocator Name=Vip}" />
72+
</Border>
73+
</Grid>
74+
<Grid Grid.Row="1" ColumnSpacing="4">
75+
<Grid.ColumnDefinitions>
76+
<ColumnDefinition />
77+
<ColumnDefinition />
78+
<ColumnDefinition />
79+
</Grid.ColumnDefinitions>
80+
<Button Style="{StaticResource BasicButtonStyle}" Click="OnDynamicButtonClick">
81+
<StackPanel Spacing="2">
82+
<TextBlock
83+
Style="{StaticResource BodyTextBlockStyle}"
84+
HorizontalAlignment="Center"
85+
Text="{x:Bind ViewModel.DynamicCount, Mode=OneWay}" />
86+
<TextBlock
87+
Style="{StaticResource CaptionTextBlockStyle}"
88+
HorizontalAlignment="Center"
89+
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
90+
Text="{loc:LocaleLocator Name=DynamicCount}" />
91+
</StackPanel>
92+
</Button>
93+
94+
<Button
95+
Style="{StaticResource BasicButtonStyle}"
96+
Grid.Column="1"
97+
Click="OnFollowButtonClick">
98+
<StackPanel Spacing="2">
99+
<TextBlock
100+
Style="{StaticResource BodyTextBlockStyle}"
101+
HorizontalAlignment="Center"
102+
Text="{x:Bind ViewModel.FollowCount, Mode=OneWay}" />
103+
<TextBlock
104+
Style="{StaticResource CaptionTextBlockStyle}"
105+
HorizontalAlignment="Center"
106+
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
107+
Text="{loc:LocaleLocator Name=FollowCount}" />
108+
</StackPanel>
109+
</Button>
110+
111+
<Button
112+
Style="{StaticResource BasicButtonStyle}"
113+
Grid.Column="2"
114+
Click="OnFollowerButtonClick">
115+
<StackPanel
116+
Grid.Column="4"
117+
HorizontalAlignment="Right"
118+
Spacing="2">
119+
<TextBlock
120+
Style="{StaticResource BodyTextBlockStyle}"
121+
HorizontalAlignment="Center"
122+
Text="{x:Bind ViewModel.FollowerCount, Mode=OneWay}" />
123+
<TextBlock
124+
Style="{StaticResource CaptionTextBlockStyle}"
125+
HorizontalAlignment="Center"
126+
Foreground="{ThemeResource TextFillColorSecondaryBrush}"
127+
Text="{loc:LocaleLocator Name=FansCount}" />
128+
</StackPanel>
129+
</Button>
130+
</Grid>
131+
</Grid>
132+
</UserControl>

0 commit comments

Comments
 (0)