重命名

This commit is contained in:
GG Z
2026-01-02 17:30:30 +08:00
parent 0e9db9a2b9
commit fa0d280130
245 changed files with 4405 additions and 4236 deletions

View File

@@ -0,0 +1,80 @@
using System.Diagnostics;
using System.Windows.Controls.Primitives;
using System.Windows.Input;
namespace VariaStudio.Controls;
/// <summary>
/// A hyperlink button.
/// </summary>
public class Hyperlink : ButtonBase
{
#region Properties
/// <summary>
/// 已经浏览过的依赖属性。
/// </summary>
public bool IsVisited
{
get { return (bool)GetValue(IsVisitedProperty); }
// 外部无法直接赋值,只能读取
private set { SetValue(IsVisitedPropertyKey, value); }
}
/// <summary>
/// 定义私有的 Key这是“写入权限”的钥匙只有在这个类内部才能拿到
/// </summary>
public static readonly DependencyProperty IsVisitedProperty =
IsVisitedPropertyKey.DependencyProperty;
/// <summary>
/// 表示已经浏览过的依赖属性。
/// </summary>
public static readonly DependencyPropertyKey IsVisitedPropertyKey =
DependencyProperty.RegisterReadOnly(nameof(IsVisited), typeof(bool), typeof(Hyperlink), new PropertyMetadata(false));
/// <summary>
/// 外部调用此方法来将超链接标记为已访问。
/// </summary>
public void MarkAsVisited()
{
SetValue(IsVisitedPropertyKey, true);
}
/// <summary>
/// 表示超链接地址的依赖属性。
/// </summary>
public static readonly DependencyProperty NavigateUriProperty =
DependencyProperty.Register(nameof(NavigateUri), typeof(string), typeof(Hyperlink), new PropertyMetadata(string.Empty));
/// <summary>
/// Gets or sets the uri of hyperlinks.
/// </summary>
public string NavigateUri { get => (string)GetValue(NavigateUriProperty);
set => SetValue(NavigateUriProperty, value);
}
#endregion
#region Constructors
static Hyperlink()
{ DefaultStyleKeyProperty.OverrideMetadata(typeof(Hyperlink), new FrameworkPropertyMetadata(typeof(Hyperlink))); }
#endregion
/// <summary>
/// 点击后的事件
/// </summary>
/// <param name="e"></param>
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
base.OnMouseLeftButtonDown(e);
if (string.IsNullOrEmpty(NavigateUri)) return;
try
{
// 1. 打开网页
Process.Start(new ProcessStartInfo(NavigateUri) { UseShellExecute = true });
// 2. 改变自身状态(这就是你作为控件的“记忆”)
SetValue(IsVisitedPropertyKey, true);
}
catch
{
// 忽略无效链接异常
}
}
}