Files
xyou f70b061d1a
CI / Go Backend (push) Canceled after 0s
feat: 项目初始化 + 3D方块世界原型 + AI助搭系统
初始化 monorepo: Go后端(7微服务) + Unity客户端(9模块) + 启动器

HTML5原型: Three.js 3D体素世界, Perlin噪声地形, 原版材质, 22种方块

Minecraft创造模式背包: 双栏布局, 拖拽移动物品, 方向性元件引脚

AI助搭策划文档 + 客户端/服务端骨架 + Docker Compose + CI
2026-08-08 14:07:56 +08:00

100 lines
2.8 KiB
C#

using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
namespace PCL;
public class MyComboBoxItem : ComboBoxItem
{
// 指向动画
private const int animationTimeIn = 100;
private const int animationTimeOut = 300;
private string backColorName;
private double fontOpacity;
// 基础
public int Uuid = ModBase.GetUuid();
public MyComboBoxItem()
{
Style = (Style)FindResource("MyComboBoxItem");
Unselected += (_, _) => RefreshColor();
MouseMove += (_, _) => RefreshColor();
MouseLeave += (_, _) => RefreshColor();
Selected += (_, _) => RefreshColor();
IsEnabledChanged += (_, _) => RefreshColor();
MouseLeftButtonUp += MyComboBoxItem_MouseLeftButtonUp;
}
private void RefreshColor()
{
// 判断当前颜色
string newBackColorName;
double newFontOpacity;
int time;
if (IsSelected)
{
newBackColorName = "ColorBrush6";
newFontOpacity = 1d;
time = animationTimeIn;
}
else if (IsMouseOver)
{
newBackColorName = "ColorBrush8";
newFontOpacity = 1d;
time = animationTimeIn;
}
else if (IsEnabled)
{
newBackColorName = "ColorBrushTransparent";
newFontOpacity = 1d;
time = animationTimeOut;
}
else
{
newBackColorName = "ColorBrushTransparent";
newFontOpacity = 0.4d;
time = animationTimeOut;
}
if ((backColorName ?? "") == (newBackColorName ?? "") && fontOpacity == newFontOpacity)
return;
backColorName = newBackColorName;
fontOpacity = newFontOpacity;
// 触发颜色动画
if (IsLoaded && ModAnimation.AniControlEnabled == 0) // 防止默认属性变更触发动画
{
// 有动画
ModAnimation.AniStart(
new[]
{
ModAnimation.AaColor(this, BackgroundProperty, backColorName, time),
ModAnimation.AaOpacity(this, fontOpacity - Opacity, time)
}, "ComboBoxItem Color " + Uuid);
}
else
{
// 无动画
ModAnimation.AniStop("ComboBoxItem Color " + Uuid);
SetResourceReference(BackgroundProperty, backColorName);
Opacity = fontOpacity;
}
}
public override string ToString()
{
return Content?.ToString() ?? "";
}
public static implicit operator string(MyComboBoxItem value)
{
return value.Content?.ToString() ?? "";
}
private void MyComboBoxItem_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
ModBase.Log("[Control] 选择下拉列表项:" + ToString());
}
}