Fix DonateRecord Avatar

This commit is contained in:
RMBGAME
2021-11-23 12:36:52 +08:00
parent 59900901ac
commit d6d1d9e134
6 changed files with 121 additions and 46 deletions
+1 -1
View File
@@ -14,9 +14,9 @@
<converters:DrawingKeyValueConverter x:Key="DrawingKeyValueConverter" />
<converters:BitmapAssetValueConverter x:Key="BitmapAssetValueConverter" />
<converters:GuidToUrlConverter x:Key="GuidToUrlConverter" />
<converters:GenderEnumValueConverter x:Key="GenderEnumValueConverter" />
<converters:StringFormatConverter x:Key="StringFormatConverter" />
<converters:SizeConverter x:Key="SizeConverter" />
<converters:EnumEqualValueConverter x:Key="EnumEqualValueConverter" />
</Application.Resources>
<Application.Styles>
<!--<FluentTheme Mode="Dark" />-->
@@ -1,4 +1,4 @@
using System.ComponentModel;
using System.ComponentModel;
using System.Globalization;
using System.Reflection;
@@ -10,25 +10,22 @@ namespace System.Application.Converters
{
}
public override object? ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType)
{
if (destinationType == typeof(string))
{
if (null != value)
if (value is not null && value is Enum e)
{
if (value.GetType().IsEnum)
var fi = e.GetType().GetField(e.ToString());
if (null != fi)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
var attributes =
(DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
if (null != fi)
{
var attributes =
(DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
return ((attributes.Length > 0) && (!string.IsNullOrEmpty(attributes[0].Description)))
? attributes[0].Description
: value.ToString();
}
return ((attributes.Length > 0) && (!string.IsNullOrEmpty(attributes[0].Description)))
? attributes[0].Description
: e.ToString();
}
}
@@ -0,0 +1,32 @@
using Avalonia.Data;
using Avalonia.Data.Converters;
using System.Globalization;
namespace System.Application.Converters
{
public class EnumEqualValueConverter : IValueConverter
{
object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null || parameter == null)
return false;
if (value is Enum)
{
if (parameter is Enum)
{
return value.Equals(parameter);
}
else if (parameter is string)
{
return value.ToString() == parameter.ToString();
}
}
return false;
}
object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return BindingOperations.DoNothing;
}
}
}
@@ -103,36 +103,78 @@
<EllipseGeometry Rect="0,0,64,64" />
</gif:Image2.Clip>
</gif:Image2>-->
<Image x:Name="avatar" Source="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Assets/AppResources/avatar.jpg"/>
<i:Interaction.Behaviors>
<ia:DataTriggerBehavior
Binding="{Binding Type}"
ComparisonCondition="Equal"
Value="{x:Static app:ExternalTransactionType.Afdian}">
<ia:ChangePropertyAction
PropertyName="Source"
TargetObject="{ReflectionBinding #avatar}"
Value="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Assets/afdian.png" />
</ia:DataTriggerBehavior>
<ia:DataTriggerBehavior
Binding="{Binding Type}"
ComparisonCondition="Equal"
Value="{x:Static app:ExternalTransactionType.Ko_fi}">
<ia:ChangePropertyAction
PropertyName="Source"
TargetObject="{ReflectionBinding #avatar}"
Value="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Assets/ko-fi.png" />
</ia:DataTriggerBehavior>
<ia:DataTriggerBehavior
Binding="{Binding Type}"
ComparisonCondition="Equal"
Value="{x:Static app:ExternalTransactionType.Patreon}">
<ia:ChangePropertyAction
PropertyName="Source"
TargetObject="{ReflectionBinding #avatar}"
Value="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Assets/pateron.png" />
</ia:DataTriggerBehavior>
</i:Interaction.Behaviors>
<Image
Width="64"
Height="64"
Source="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Assets/afdian.png"
IsVisible="{Binding Type,Converter={StaticResource EnumEqualValueConverter},ConverterParameter={x:Static app:ExternalTransactionType.Afdian}}"
VerticalAlignment="Center">
<Image.Clip>
<EllipseGeometry Rect="0,0,64,64" />
</Image.Clip>
</Image>
<Image
Width="64"
Height="64"
Source="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Assets/ko-fi.png"
IsVisible="{Binding Type,Converter={StaticResource EnumEqualValueConverter},ConverterParameter={x:Static app:ExternalTransactionType.Ko_fi}}"
VerticalAlignment="Center">
<Image.Clip>
<EllipseGeometry Rect="0,0,64,64" />
</Image.Clip>
</Image>
<Image
Width="64"
Height="64"
Source="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Assets/pateron.png"
IsVisible="{Binding Type,Converter={StaticResource EnumEqualValueConverter},ConverterParameter={x:Static app:ExternalTransactionType.Patreon}}"
VerticalAlignment="Center">
<Image.Clip>
<EllipseGeometry Rect="0,0,64,64" />
</Image.Clip>
</Image>
<!--等待一个DataTriggerBehavior未解决问题才能改进
https://github.com/wieslawsoltes/AvaloniaBehaviors/issues/80
-->
<!--<Image x:Name="avatar"
Width="64"
Height="64"
VerticalAlignment="Center">
<Image.Clip>
<EllipseGeometry Rect="0,0,64,64" />
</Image.Clip>
<i:Interaction.Behaviors>
<ia:DataTriggerBehavior
Binding="{Binding Type,Converter={StaticResource EnumEqualValueConverter},ConverterParameter={x:Static app:ExternalTransactionType.Afdian}}"
ComparisonCondition="Equal"
Value="True">
<ia:ChangePropertyAction
PropertyName="Source"
TargetObject="{ReflectionBinding #avatar}"
Value="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Assets/afdian.png" />
</ia:DataTriggerBehavior>
<ia:DataTriggerBehavior
Binding="{Binding Type,Converter={StaticResource EnumEqualValueConverter},ConverterParameter={x:Static app:ExternalTransactionType.Ko_fi}}"
ComparisonCondition="Equal"
Value="True">
<ia:ChangePropertyAction
PropertyName="Source"
TargetObject="{ReflectionBinding #avatar}"
Value="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Assets/ko-fi.png" />
</ia:DataTriggerBehavior>
<ia:DataTriggerBehavior
Binding="{Binding Type,Converter={StaticResource EnumEqualValueConverter},ConverterParameter={x:Static app:ExternalTransactionType.Patreon}}"
ComparisonCondition="Equal"
Value="True">
<ia:ChangePropertyAction
PropertyName="Source"
TargetObject="{ReflectionBinding #avatar}"
Value="avares://System.Application.SteamTools.Client.Avalonia/Application/UI/Assets/pateron.png" />
</ia:DataTriggerBehavior>
</i:Interaction.Behaviors>
</Image>-->
<StackPanel DockPanel.Dock="Right"
Spacing="5"
Margin="10">
@@ -49,7 +49,7 @@
</DockPanel>
</Border>
<Separator Classes="Separator"/>
<!--<Separator Classes="Separator"/>-->
</StackPanel>
</ScrollViewer>
</UserControl>
@@ -8,6 +8,7 @@
Width="450" Height="520"
MinWidth="450" MinHeight="520"
x:Class="System.Application.UI.Views.Windows.UserProfileWindow"
xmlns:converters="using:System.Application.Converters"
xmlns:controls="clr-namespace:System.Application.UI.Views.Controls"
xmlns:resx="using:System.Application.UI.Resx"
xmlns:ccl_services="using:System.Application.Services"
@@ -19,6 +20,9 @@
WindowStartupLocation="CenterOwner"
x:DataType="vm:UserProfileWindowViewModel"
x:CompileBindings="True">
<Window.Resources>
<converters:GenderEnumValueConverter x:Key="GenderEnumValueConverter" />
</Window.Resources>
<Panel>
<Panel.Styles>
<Style Selector="TextBlock.FormItemLabel">