DragAndDrop core
This commit is contained in:
102
Lattice.UI.DragDrop.WinUI/Helpers/ResourceHelper.cs
Normal file
102
Lattice.UI.DragDrop.WinUI/Helpers/ResourceHelper.cs
Normal file
@@ -0,0 +1,102 @@
|
||||
using Microsoft.UI.Xaml;
|
||||
using Microsoft.UI.Xaml.Media;
|
||||
using Windows.UI;
|
||||
|
||||
namespace Lattice.UI.DragDrop.WinUI.Helpers;
|
||||
|
||||
/// <summary>
|
||||
/// Вспомогательный класс для работы с ресурсами.
|
||||
/// </summary>
|
||||
public static class ResourceHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// Инициализирует ресурсы перетаскивания.
|
||||
/// </summary>
|
||||
public static void InitializeDragDropResources()
|
||||
{
|
||||
// Загружаем Generic.xaml, если он еще не загружен
|
||||
var resourceDictionary = new ResourceDictionary();
|
||||
|
||||
// В реальном приложении нужно загружать из правильного пути
|
||||
try
|
||||
{
|
||||
resourceDictionary.Source = new System.Uri("ms-appx:///Lattice.UI.DragDrop.WinUI/Themes/Generic.xaml");
|
||||
Application.Current.Resources.MergedDictionaries.Add(resourceDictionary);
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Если не удалось загрузить из файла, создаем базовые ресурсы
|
||||
CreateFallbackResources();
|
||||
}
|
||||
}
|
||||
|
||||
private static void CreateFallbackResources()
|
||||
{
|
||||
var resources = Application.Current.Resources;
|
||||
|
||||
// Базовые кисти для визуальной обратной связи
|
||||
if (!resources.ContainsKey("DragOverBackgroundBrush"))
|
||||
{
|
||||
resources["DragOverBackgroundBrush"] = new SolidColorBrush(
|
||||
Color.FromArgb(76, 0, 120, 215)); // 30% opacity
|
||||
}
|
||||
|
||||
if (!resources.ContainsKey("DragOverBorderBrush"))
|
||||
{
|
||||
resources["DragOverBorderBrush"] = new SolidColorBrush(
|
||||
Color.FromArgb(255, 0, 120, 215));
|
||||
}
|
||||
|
||||
if (!resources.ContainsKey("DropValidBrush"))
|
||||
{
|
||||
resources["DropValidBrush"] = new SolidColorBrush(
|
||||
Color.FromArgb(255, 0, 204, 0));
|
||||
}
|
||||
|
||||
if (!resources.ContainsKey("DropInvalidBrush"))
|
||||
{
|
||||
resources["DropInvalidBrush"] = new SolidColorBrush(
|
||||
Color.FromArgb(255, 255, 0, 0));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получает стиль из ресурсов.
|
||||
/// </summary>
|
||||
public static Style? GetStyle(string styleKey)
|
||||
{
|
||||
if (Application.Current.Resources.TryGetValue(styleKey, out var style) && style is Style)
|
||||
{
|
||||
return style as Style;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Получает кисть из ресурсов.
|
||||
/// </summary>
|
||||
public static Brush? GetBrush(string brushKey)
|
||||
{
|
||||
if (Application.Current.Resources.TryGetValue(brushKey, out var brush) && brush is Brush)
|
||||
{
|
||||
return brush as Brush;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Добавляет или обновляет ресурс.
|
||||
/// </summary>
|
||||
public static void SetResource(string key, object value)
|
||||
{
|
||||
Application.Current.Resources[key] = value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Проверяет существование ресурса.
|
||||
/// </summary>
|
||||
public static bool HasResource(string key)
|
||||
{
|
||||
return Application.Current.Resources.ContainsKey(key);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user