电气前端提交

This commit is contained in:
CHEN-ZW\acer 2025-08-15 15:33:20 +08:00
parent d03629aab0
commit e932112a96
129 changed files with 216549 additions and 0 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,268 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Text.RegularExpressions;
using IniParser;
using Prism.DryIoc;
using Prism.Ioc;
using SWS.Model;
using Unity;
namespace SWS.Commons
{
public class GlobalObject
{
public static string templateForDrawing = "普通图框";
public static string editorPre = "DI_Electrical ";
public static string TemplateFile_Template = "普通图框";
public static string configPath = Environment.ExpandEnvironmentVariables(@"%USERPROFILE%\AppData\Roaming\BricsCAD Electrical\Config\AppConfig.ini");
#region DataItemDetail列表转换成树形结果
/// <summary>
/// DataItemDetail列表转换成树形结果
/// </summary>
/// <param name="listData">列表数据</param>
/// <param name="isChildres">是否子节点遍历添加</param>
/// <returns></returns>
public static ObservableCollection<TreeModel> DataItemDetailsToTree(List<ec_dataitemdetail> listData, bool isChildres = false)
{
ObservableCollection<TreeModel> result = new ObservableCollection<TreeModel>();
List<ec_dataitemdetail> list = new List<ec_dataitemdetail>();
if (isChildres)
{ list = listData; }
else
{
//取所有第一级树
list = listData.Where(a => a.UpDataItemDetailID == "0").ToList();
}
foreach (var data in list)
{
//获取当前节点的所有子节点
var details = listData.Where(a => a.UpDataItemDetailID == data.DataItemDetailID).ToList();
if (details.Any())
{
//获取子节点
var childrens = DataItemDetailsToTree(details, true);
result.Add(new TreeModel
{
ID = data.DataItemDetailID,
Text = data.DataItemName,
ChildNodes = childrens
});
}
else
{
//没有子节点就添加当前节点Node
result.Add(new TreeModel
{
ID = data.DataItemDetailID,
Text = data.DataItemName,
});
}
}
return result;
}
#endregion
#region
/// <summary>
/// 对象类型树
/// </summary>
public static List<TreeModel> objectTypeTree = new List<TreeModel>();
#endregion
#region
/// <summary>
/// 设计浏览树
/// </summary>
public static List<TreeModel> designTree = new List<TreeModel>();
#endregion
public enum dialogPar
{
id,
textYes,
textNo,
title,
OK,
unitTypeId,
info,
unit,
para1,
para2
}
public static IContainerRegistry containerRegistry ;
public static IUnityContainer container;
public static IContainerExtension _prismContainer ;
public static HttpClient client;
public static loginRes userInfo;
public static List<User> Users;
public static bool isConfigIniCreateBySys = true;
//public static string drawingFileId;
public static ec_project curProject;
public static DateTime preClickTime = DateTime.Now;
public static Unit UnitSelected;
public static List<ec_measuring_unit> Units;
/// <summary>
/// 打开的图纸名列表
/// </summary>
public static List<DrawingOpened> ListDwgOpened = new List<DrawingOpened>();
/// <summary>
/// 图纸树上的所有图纸名
/// </summary>
public static List<string> AllDwgName = new List<string>();
public static string currentTagNumber;
#region
static string _LocalFileDirectory;
/// <summary>
/// 获取本地目录文件夹
/// </summary>
/// <returns></returns>
public static string GetLocalFileDirectory()
{
if (string.IsNullOrEmpty(_LocalFileDirectory))
{
string path = Environment.ExpandEnvironmentVariables(@"%USERPROFILE%\AppData\Roaming\SWS\Config.ini");
FileIniDataParser parser = new FileIniDataParser();
var data = parser.ReadFile(path);
_LocalFileDirectory = data["Profile"]["Directory"];
return _LocalFileDirectory;
}
else
{ return _LocalFileDirectory; }
}
/// <summary>
/// 设置本地目录文件夹
/// </summary>
/// <param name="dir">文件夹目录</param>
public static void SetLocalFileDirectory(string dir)
{ _LocalFileDirectory = dir; }
#endregion
#region
/// <summary>
/// 图纸文件所在文件夹
/// </summary>
/// <returns></returns>
public static string GetDwgFileFolder()
{
string path = Path.Combine(GetLocalFileDirectory(), curProject.ProjectIndex.ToString());
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
return path;
}
#endregion
#region
/// <summary>
/// 图纸文件备份文件夹
/// </summary>
/// <returns></returns>
public static string GetBackupDwgFileFolder()
{
string path = Path.Combine(GetDwgFileFolder(), "Backup");
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
return path;
}
#endregion
#region ID获取用户名称
/// <summary>
/// 根据ID获取用户名称
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static string GetUserNameById(string id)
{
if (string.IsNullOrEmpty(id))
{ return ""; }
var user = Users.FirstOrDefault(a => a.F_UserId == id || a.F_Account == id);
if (user != null)
{ return user.F_RealName; }
else
{
return "";
//user = GlobalObject.Users.FirstOrDefault(a => a.F_Account == id);
//return user != null ? user.F_RealName : "";
}
}
#endregion
#region
/// <summary>
/// 判断是否是电缆
/// </summary>
/// <returns></returns>
public static bool IsCable(ec_objecttype obj)
{
if (obj == null) { return false; }
var flag = obj.ObjectTypeName.EndsWith("电缆");
return flag;
}
#endregion
#region
/// <summary>
/// 取字符串最后的一个或多个数字
/// </summary>
/// <param name="input">输入字符串</param>
/// <param name="preInput">数字前的字符串</param>
/// <param name="num">最后的数字</param>
/// <returns></returns>
public static bool GetLastNumber(string input, ref string preInput, ref int num)
{
string pattern = @"(\d+)$"; // 正则表达式,匹配字符串末尾的一个或多个数字
Match match = Regex.Match(input, pattern);
if (match.Success)
{
preInput = input.Substring(0, input.Length - match.Value.Length);
num = int.Parse(match.Value);
return true;
}
else
{
return false;
}
}
#endregion
/// <summary>
///
/// </summary>
/// <param name="resName">包括命名空间</param>
/// <returns></returns>
public static System.Windows.Media.ImageSource ImageSourceFromEmbeddedResourceStream(string resName)
{
string imgPath = $"SWS.Commons.Images.{resName}";
System.Reflection.Assembly assy = System.Reflection.Assembly.GetExecutingAssembly();
//foreach (string resource in assy.GetManifestResourceNames())
//{
// Console.WriteLine(resource);//遍历所有的内嵌资源
//}
System.IO.Stream stream = assy.GetManifestResourceStream(imgPath);
if (stream == null)
return null;
System.Windows.Media.Imaging.BitmapImage img = new System.Windows.Media.Imaging.BitmapImage();
img.BeginInit();
img.StreamSource = stream;
img.EndInit();
return img;
}
public static string GetPCInfo()
{
string computerName = Environment.MachineName; // 获取计算机名称
string userName = Environment.UserName; // 获取当前用户名称
return $"{computerName} 计算机{userName} 用户";
}
}
}

View File

@ -0,0 +1,45 @@
using System;
using System.Collections.ObjectModel;
using System.Globalization;
using System.Windows.Data;
using SWS.Model;
namespace SWS.Commons.Helper.Converter
{
public class CollectionToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
ObservableCollection<ec_dataitemdetail> WHCPUs = value as ObservableCollection<ec_dataitemdetail>;
if (WHCPUs != null)
{
string sWHCPU = "";
for (int i = 0; i < WHCPUs.Count; i++)
{
if (i!= WHCPUs.Count-1)
{
if (WHCPUs[i] != null)
{
sWHCPU = sWHCPU + WHCPUs[i].DataItemCode + "|";
}
}
else
{
if (WHCPUs[i] != null)
{
sWHCPU = sWHCPU + WHCPUs[i].DataItemCode;
}
}
}
return sWHCPU;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@ -0,0 +1,55 @@
using System;
using System.Globalization;
using System.Windows.Data;
using SWS.Model;
namespace SWS.Commons.Helper.Converter
{
public class RadGridViewRowToBoolConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
SignalManagementInfo smif = value as SignalManagementInfo;
if (smif != null)
{
if (smif.Status.Equals("deleted") || smif.Status.Equals("Confirmed"))
{
return true;
}
if (smif.type.Equals("信号"))
{
switch (parameter.ToString())
{
case "关联的电缆信息":
case "关联的通道信息":
return true;
}
}
else
{
switch (parameter.ToString())
{
case "组别":
case "编码":
case "信号类型":
case "Min":
case "Max":
case "单位":
case "CODE":
case "设备名":
case "关联的电缆信息":
case "关联的通道信息":
return true;
}
}
}
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Globalization;
using System.Windows.Data;
using SWS.Model;
namespace SWS.Commons.Helper.Converter
{
public class StatusToColourConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
SignalManagementInfo smif = value as SignalManagementInfo;
if (smif != null)
{
return smif.Status;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@ -0,0 +1,118 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
namespace SWS.Commons
{
public static class FileHelper
{
/// <summary>
/// dwg等文件名是否合法。不带后缀
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public static bool IsValidFileName(string fileName)
{
if (string.IsNullOrEmpty(fileName))
{
return false;
}
// 获取 Windows 文件系统中不允许出现在文件名中的字符数组
char[] invalidChars = Path.GetInvalidFileNameChars();
// 检查文件名中是否包含非法字符
foreach (char c in invalidChars)
{
if (fileName.IndexOf(c) >= 0)
{
return false;
}
}
// 检查是否为保留文件名
string[] reservedNames = { "CON", "PRN", "AUX", "NUL", "COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9" };
string trimmedFileName = Path.GetFileNameWithoutExtension(fileName).Trim().ToUpper();
foreach (string reservedName in reservedNames)
{
if (trimmedFileName == reservedName)
{
return false;
}
}
// 检查文件名是否以空格或句点结尾
if (fileName.TrimEnd().Length != fileName.Length || fileName.TrimEnd('.').Length != fileName.Length)
{
return false;
}
return true;
}
public static string GetFileMD5(string filePath)
{
if (string.IsNullOrEmpty(filePath) || !File.Exists(filePath))
{
throw new ArgumentException("文件路径无效或文件不存在", nameof(filePath));
}
using (var md5 = MD5.Create()) // 创建 MD5 哈希算法实例
using (var stream = File.OpenRead(filePath)) // 打开文件流
{
// 计算文件的 MD5 值
byte[] hashBytes = md5.ComputeHash(stream);
// 将字节数组转换为十六进制字符串
StringBuilder sb = new StringBuilder();
foreach (var b in hashBytes)
{
sb.Append(b.ToString("x2")); // x2 格式化为两位小写十六进制数
}
return sb.ToString(); // 返回 MD5 值的字符串
}
}
#region
/// <summary>
/// 检查文件是否被其他进程占用
/// </summary>
public static bool IsFileLocked(string filePath)
{
try
{
// 尝试以独占模式打开文件
using (FileStream fs = File.Open(
filePath,
FileMode.Open,
FileAccess.ReadWrite,
FileShare.None)) // FileShare.None 表示禁止共享
{
return false; // 成功打开则未被占用
}
}
catch (IOException ex)
{
// 检查特定错误码
int errorCode = Marshal.GetHRForException(ex) & 0xFFFF;
return errorCode == 32 || errorCode == 33; // 32: 共享冲突, 33: 进程锁定
}
catch (UnauthorizedAccessException)
{
return true; // 无权限访问(可能被占用)
}
catch
{
return false; // 其他异常视为未被占用
}
}
#endregion
}
}

View File

@ -0,0 +1,144 @@
using System;
using System.IO;
using System.Reflection;
using Newtonsoft.Json.Linq;
namespace SWS.Commons
{
/// <summary>
/// nLog使用帮助类
/// </summary>
public class LoggerHelper
{
private static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");
private static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");
private static readonly log4net.ILog logdebug = log4net.LogManager.GetLogger("logdebug");
private static readonly log4net.ILog logwarn = log4net.LogManager.GetLogger("logwarn");
private static readonly log4net.ILog logfatal = log4net.LogManager.GetLogger("logfatal");
private static LoggerHelper _obj = null;
private static string logPath = string.Empty;
private LoggerHelper()
{
string codeBase = Assembly.GetExecutingAssembly().CodeBase;
string dllPath = codeBase.Replace("file:///", "");
dllPath = Path.GetDirectoryName(dllPath);
logPath = Path.Combine(dllPath, "Logs\\");
var configFile = new FileInfo(Path.Combine(dllPath, "log4net.config"));
log4net.Config.XmlConfigurator.ConfigureAndWatch(configFile);
}
/// <summary>
/// 获取当前的日志记录<see cref="LoggerHelper"/>对象。
/// </summary>
public static LoggerHelper Current
{
get => _obj ?? (new LoggerHelper());
set => _obj = value;
}
#region Debug
/// <summary>
/// 调试信息输出。
/// </summary>
/// <param name="msg">需要记录的信息。</param>
public void Debug(string msg)
{
logdebug.Debug(msg);
}
#endregion
#region Info
/// <summary>
/// 普通信息输出。
/// </summary>
/// <param name="msg">需要记录的信息。</param>
public void Info(string msg)
{
loginfo.Info(msg);
}
#endregion
#region Warn
/// <summary>
/// 警告级别信息输出。
/// </summary>
/// <param name="msg">需要记录的信息。</param>
public void Warn(string msg)
{
logwarn.Warn(msg);
}
#endregion
#region Error
/// <summary>
/// 错误级别信息输出。
/// </summary>
/// <param name="msg">需要记录的信息。</param>
public void Error(string msg)
{
logerror.Error("----------------------------Error BEGIN------------------------------");
logerror.Error(msg);
logerror.Error("-----------------------------Error END-------------------------------");
}
#endregion
#region Fatal,
/// <summary>
/// 致命错误级别信息输出。
/// </summary>
/// <param name="msg">需要记录的信息。</param>
/// <param name="err">需要记录的系统异常。</param>
public void Fatal(string msg)
{
logfatal.Fatal("----------------------------Fatal BEGIN------------------------------");
logerror.Fatal(msg);
logerror.Fatal("-----------------------------Fatal END-------------------------------");
}
#endregion
#region json日志
/// <summary>
/// 输出json日志
/// </summary>
/// <param name="funName">json方法名</param>
/// <param name="json">json数据</param>
public void WriteJson(string funName, string json)
{
try
{
//json路径文件名 Environment.ExpandEnvironmentVariables(@"%USERPROFILE%\AppData\Roaming\SWS\Logs\"
string filename = Path.Combine(logPath, funName + ".json");
//判断文件是否被打开占用
if (!FileHelper.IsFileLocked(filename))
{
File.Delete(filename);
string strJson = string.Empty;
if (json.StartsWith("["))
{
//格式化json数据 当前为组类型
JArray jobj = JArray.Parse(json);
strJson = jobj.ToString();
}
else if (json.StartsWith("{"))
{
//格式化json数据 当前为类类型
JObject jobj = JObject.Parse(json);
strJson = jobj.ToString();
}
//创建json文件并输出数据
FileStream fs = new FileStream(filename, FileMode.Append);
StreamWriter wr = null;
wr = new StreamWriter(fs);
wr.WriteLine(strJson);
wr.Close();
}
}
catch { }
}
#endregion
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 916 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 755 B

View File

@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("SWS.Commons")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SWS.Commons")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("9ac724f6-883d-4357-9422-602748f25b69")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,134 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{9AC724F6-883D-4357-9422-602748F25B69}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SWS.Commons</RootNamespace>
<AssemblyName>SWS.Commons</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="DryIoc, Version=4.7.7.0, Culture=neutral, PublicKeyToken=dfbf2bd50fcf7768, processorArchitecture=MSIL">
<HintPath>..\packages\DryIoc.dll.4.7.7\lib\net45\DryIoc.dll</HintPath>
</Reference>
<Reference Include="INIFileParser">
<HintPath>..\packages\ini-parser.2.5.2\lib\net20\INIFileParser.dll</HintPath>
</Reference>
<Reference Include="log4net, Version=3.1.0.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.3.1.0\lib\net462\log4net.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.8.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.1, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.8.0.1\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Xaml.Behaviors, Version=1.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Xaml.Behaviors.Wpf.1.1.122\lib\net462\Microsoft.Xaml.Behaviors.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.1.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="Prism, Version=8.1.97.5141, Culture=neutral, PublicKeyToken=40ee6c3a2184dc59, processorArchitecture=MSIL">
<HintPath>..\packages\Prism.Core.8.1.97\lib\net47\Prism.dll</HintPath>
</Reference>
<Reference Include="Prism.DryIoc.Wpf, Version=8.1.97.5141, Culture=neutral, PublicKeyToken=40ee6c3a2184dc59, processorArchitecture=MSIL">
<HintPath>..\packages\Prism.DryIoc.8.1.97\lib\net47\Prism.DryIoc.Wpf.dll</HintPath>
</Reference>
<Reference Include="Prism.Unity.Wpf, Version=8.1.97.5141, Culture=neutral, PublicKeyToken=40ee6c3a2184dc59, processorArchitecture=MSIL">
<HintPath>..\packages\Prism.Unity.8.1.97\lib\net47\Prism.Unity.Wpf.dll</HintPath>
</Reference>
<Reference Include="Prism.Wpf, Version=8.1.97.5141, Culture=neutral, PublicKeyToken=40ee6c3a2184dc59, processorArchitecture=MSIL">
<HintPath>..\packages\Prism.Wpf.8.1.97\lib\net47\Prism.Wpf.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Windows" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Windows.Presentation" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="Telerik.Windows.Controls, Version=2024.1.130.45, Culture=neutral, PublicKeyToken=5803cfa389c90ce7, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\SWS.CAD\RefDLL\WPF45\Telerik.Windows.Controls.dll</HintPath>
</Reference>
<Reference Include="Unity.Abstractions, Version=5.11.7.0, Culture=neutral, PublicKeyToken=489b6accfaf20ef0, processorArchitecture=MSIL">
<HintPath>..\packages\Unity.Abstractions.5.11.7\lib\net48\Unity.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Unity.Container, Version=5.11.11.0, Culture=neutral, PublicKeyToken=489b6accfaf20ef0, processorArchitecture=MSIL">
<HintPath>..\packages\Unity.Container.5.11.11\lib\net48\Unity.Container.dll</HintPath>
</Reference>
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<Compile Include="GlobalObject.cs" />
<Compile Include="Helper\Converter\CollectionToStringConverter.cs" />
<Compile Include="Helper\Converter\RadGridViewRowToBoolConverter.cs" />
<Compile Include="Helper\Converter\StatusToColourConverter.cs" />
<Compile Include="Helper\FileHelper.cs" />
<Compile Include="Helper\LoggerHelper.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="log4net.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SWS.Model\SWS.Model.csproj">
<Project>{1995385b-d1b0-4c55-835e-d3e769972a6a}</Project>
<Name>SWS.Model</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Images\OpenProject.png" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Images\SinalManage.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Prism.Wpf" publicKeyToken="40ee6c3a2184dc59" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.537.60525" newVersion="9.0.537.60525" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Prism" publicKeyToken="40ee6c3a2184dc59" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.537.60525" newVersion="9.0.537.60525" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="DryIoc" publicKeyToken="dfbf2bd50fcf7768" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.4.3.0" newVersion="5.4.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Prism.Container.Abstractions" publicKeyToken="40ee6c3a2184dc59" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.106.9543" newVersion="9.0.106.9543" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.1" newVersion="8.0.0.1" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,417 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Microsoft.Bcl.AsyncInterfaces</name>
</assembly>
<members>
<member name="T:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1">
<summary>Provides the core logic for implementing a manual-reset <see cref="T:System.Threading.Tasks.Sources.IValueTaskSource"/> or <see cref="T:System.Threading.Tasks.Sources.IValueTaskSource`1"/>.</summary>
<typeparam name="TResult"></typeparam>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._continuation">
<summary>
The callback to invoke when the operation completes if <see cref="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.OnCompleted(System.Action{System.Object},System.Object,System.Int16,System.Threading.Tasks.Sources.ValueTaskSourceOnCompletedFlags)"/> was called before the operation completed,
or <see cref="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCoreShared.s_sentinel"/> if the operation completed before a callback was supplied,
or null if a callback hasn't yet been provided and the operation hasn't yet completed.
</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._continuationState">
<summary>State to pass to <see cref="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._continuation"/>.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._executionContext">
<summary><see cref="T:System.Threading.ExecutionContext"/> to flow to the callback, or null if no flowing is required.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._capturedContext">
<summary>
A "captured" <see cref="T:System.Threading.SynchronizationContext"/> or <see cref="T:System.Threading.Tasks.TaskScheduler"/> with which to invoke the callback,
or null if no special context is required.
</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._completed">
<summary>Whether the current operation has completed.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._result">
<summary>The result with which the operation succeeded, or the default value if it hasn't yet completed or failed.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._error">
<summary>The exception with which the operation failed, or null if it hasn't yet completed or completed successfully.</summary>
</member>
<member name="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._version">
<summary>The current version of this value, used to help prevent misuse.</summary>
</member>
<member name="P:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.RunContinuationsAsynchronously">
<summary>Gets or sets whether to force continuations to run asynchronously.</summary>
<remarks>Continuations may run asynchronously if this is false, but they'll never run synchronously if this is true.</remarks>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.Reset">
<summary>Resets to prepare for the next operation.</summary>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.SetResult(`0)">
<summary>Completes with a successful result.</summary>
<param name="result">The result.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.SetException(System.Exception)">
<summary>Complets with an error.</summary>
<param name="error"></param>
</member>
<member name="P:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.Version">
<summary>Gets the operation version.</summary>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.GetStatus(System.Int16)">
<summary>Gets the status of the operation.</summary>
<param name="token">Opaque value that was provided to the <see cref="T:System.Threading.Tasks.ValueTask"/>'s constructor.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.GetResult(System.Int16)">
<summary>Gets the result of the operation.</summary>
<param name="token">Opaque value that was provided to the <see cref="T:System.Threading.Tasks.ValueTask"/>'s constructor.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.OnCompleted(System.Action{System.Object},System.Object,System.Int16,System.Threading.Tasks.Sources.ValueTaskSourceOnCompletedFlags)">
<summary>Schedules the continuation action for this operation.</summary>
<param name="continuation">The continuation to invoke when the operation has completed.</param>
<param name="state">The state object to pass to <paramref name="continuation"/> when it's invoked.</param>
<param name="token">Opaque value that was provided to the <see cref="T:System.Threading.Tasks.ValueTask"/>'s constructor.</param>
<param name="flags">The flags describing the behavior of the continuation.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.ValidateToken(System.Int16)">
<summary>Ensures that the specified token matches the current version.</summary>
<param name="token">The token supplied by <see cref="T:System.Threading.Tasks.ValueTask"/>.</param>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.SignalCompletion">
<summary>Signals that the operation has completed. Invoked after the result or error has been set.</summary>
</member>
<member name="M:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1.InvokeContinuation">
<summary>
Invokes the continuation with the appropriate captured context / scheduler.
This assumes that if <see cref="F:System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1._executionContext"/> is not null we're already
running within that <see cref="T:System.Threading.ExecutionContext"/>.
</summary>
</member>
<member name="T:System.Threading.Tasks.TaskAsyncEnumerableExtensions">
<summary>Provides a set of static methods for configuring <see cref="T:System.Threading.Tasks.Task"/>-related behaviors on asynchronous enumerables and disposables.</summary>
</member>
<member name="M:System.Threading.Tasks.TaskAsyncEnumerableExtensions.ConfigureAwait(System.IAsyncDisposable,System.Boolean)">
<summary>Configures how awaits on the tasks returned from an async disposable will be performed.</summary>
<param name="source">The source async disposable.</param>
<param name="continueOnCapturedContext">Whether to capture and marshal back to the current context.</param>
<returns>The configured async disposable.</returns>
</member>
<member name="M:System.Threading.Tasks.TaskAsyncEnumerableExtensions.ConfigureAwait``1(System.Collections.Generic.IAsyncEnumerable{``0},System.Boolean)">
<summary>Configures how awaits on the tasks returned from an async iteration will be performed.</summary>
<typeparam name="T">The type of the objects being iterated.</typeparam>
<param name="source">The source enumerable being iterated.</param>
<param name="continueOnCapturedContext">Whether to capture and marshal back to the current context.</param>
<returns>The configured enumerable.</returns>
</member>
<member name="M:System.Threading.Tasks.TaskAsyncEnumerableExtensions.WithCancellation``1(System.Collections.Generic.IAsyncEnumerable{``0},System.Threading.CancellationToken)">
<summary>Sets the <see cref="T:System.Threading.CancellationToken"/> to be passed to <see cref="M:System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator(System.Threading.CancellationToken)"/> when iterating.</summary>
<typeparam name="T">The type of the objects being iterated.</typeparam>
<param name="source">The source enumerable being iterated.</param>
<param name="cancellationToken">The <see cref="T:System.Threading.CancellationToken"/> to use.</param>
<returns>The configured enumerable.</returns>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder">
<summary>Represents a builder for asynchronous iterators.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.Create">
<summary>Creates an instance of the <see cref="T:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder"/> struct.</summary>
<returns>The initialized instance.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.MoveNext``1(``0@)">
<summary>Invokes <see cref="M:System.Runtime.CompilerServices.IAsyncStateMachine.MoveNext"/> on the state machine while guarding the <see cref="T:System.Threading.ExecutionContext"/>.</summary>
<typeparam name="TStateMachine">The type of the state machine.</typeparam>
<param name="stateMachine">The state machine instance, passed by reference.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.AwaitOnCompleted``2(``0@,``1@)">
<summary>Schedules the state machine to proceed to the next action when the specified awaiter completes.</summary>
<typeparam name="TAwaiter">The type of the awaiter.</typeparam>
<typeparam name="TStateMachine">The type of the state machine.</typeparam>
<param name="awaiter">The awaiter.</param>
<param name="stateMachine">The state machine.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.AwaitUnsafeOnCompleted``2(``0@,``1@)">
<summary>Schedules the state machine to proceed to the next action when the specified awaiter completes.</summary>
<typeparam name="TAwaiter">The type of the awaiter.</typeparam>
<typeparam name="TStateMachine">The type of the state machine.</typeparam>
<param name="awaiter">The awaiter.</param>
<param name="stateMachine">The state machine.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.Complete">
<summary>Marks iteration as being completed, whether successfully or otherwise.</summary>
</member>
<member name="P:System.Runtime.CompilerServices.AsyncIteratorMethodBuilder.ObjectIdForDebugger">
<summary>Gets an object that may be used to uniquely identify this builder to the debugger.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncIteratorStateMachineAttribute">
<summary>Indicates whether a method is an asynchronous iterator.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncIteratorStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes a new instance of the <see cref="T:System.Runtime.CompilerServices.AsyncIteratorStateMachineAttribute"/> class.</summary>
<param name="stateMachineType">The type object for the underlying state machine type that's used to implement a state machine method.</param>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredAsyncDisposable">
<summary>Provides a type that can be used to configure how awaits on an <see cref="T:System.IAsyncDisposable"/> are performed.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredAsyncDisposable.DisposeAsync">
<summary>Asynchronously releases the unmanaged resources used by the <see cref="T:System.Runtime.CompilerServices.ConfiguredAsyncDisposable" />.</summary>
<returns>A task that represents the asynchronous dispose operation.</returns>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1">
<summary>Provides an awaitable async enumerable that enables cancelable iteration and configured awaits.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.ConfigureAwait(System.Boolean)">
<summary>Configures how awaits on the tasks returned from an async iteration will be performed.</summary>
<param name="continueOnCapturedContext">Whether to capture and marshal back to the current context.</param>
<returns>The configured enumerable.</returns>
<remarks>This will replace any previous value set by <see cref="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.ConfigureAwait(System.Boolean)"/> for this iteration.</remarks>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.WithCancellation(System.Threading.CancellationToken)">
<summary>Sets the <see cref="T:System.Threading.CancellationToken"/> to be passed to <see cref="M:System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator(System.Threading.CancellationToken)"/> when iterating.</summary>
<param name="cancellationToken">The <see cref="T:System.Threading.CancellationToken"/> to use.</param>
<returns>The configured enumerable.</returns>
<remarks>This will replace any previous <see cref="T:System.Threading.CancellationToken"/> set by <see cref="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.WithCancellation(System.Threading.CancellationToken)"/> for this iteration.</remarks>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.GetAsyncEnumerator">
<summary>Returns an enumerator that iterates asynchronously through collections that enables cancelable iteration and configured awaits.</summary>
<returns>An enumerator for the <see cref="T:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1" /> class.</returns>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator">
<summary>Provides an awaitable async enumerator that enables cancelable iteration and configured awaits.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator.MoveNextAsync">
<summary>Advances the enumerator asynchronously to the next element of the collection.</summary>
<returns>
A <see cref="T:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1"/> that will complete with a result of <c>true</c>
if the enumerator was successfully advanced to the next element, or <c>false</c> if the enumerator has
passed the end of the collection.
</returns>
</member>
<member name="P:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator.Current">
<summary>Gets the element in the collection at the current position of the enumerator.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.Enumerator.DisposeAsync">
<summary>
Performs application-defined tasks associated with freeing, releasing, or
resetting unmanaged resources asynchronously.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.EnumeratorCancellationAttribute">
<summary>Allows users of async-enumerable methods to mark the parameter that should receive the cancellation token value from <see cref="M:System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator(System.Threading.CancellationToken)" />.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.EnumeratorCancellationAttribute.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.Runtime.CompilerServices.EnumeratorCancellationAttribute" /> class.</summary>
</member>
<member name="T:System.Runtime.InteropServices.LibraryImportAttribute">
<summary>
Attribute used to indicate a source generator should create a function for marshalling
arguments instead of relying on the runtime to generate an equivalent marshalling function at run-time.
</summary>
<remarks>
This attribute is meaningless if the source generator associated with it is not enabled.
The current built-in source generator only supports C# and only supplies an implementation when
applied to static, partial, non-generic methods.
</remarks>
</member>
<member name="M:System.Runtime.InteropServices.LibraryImportAttribute.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.Runtime.InteropServices.LibraryImportAttribute"/>.
</summary>
<param name="libraryName">Name of the library containing the import.</param>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.LibraryName">
<summary>
Gets the name of the library containing the import.
</summary>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.EntryPoint">
<summary>
Gets or sets the name of the entry point to be called.
</summary>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshalling">
<summary>
Gets or sets how to marshal string arguments to the method.
</summary>
<remarks>
If this field is set to a value other than <see cref="F:System.Runtime.InteropServices.StringMarshalling.Custom" />,
<see cref="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshallingCustomType" /> must not be specified.
</remarks>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshallingCustomType">
<summary>
Gets or sets the <see cref="T:System.Type"/> used to control how string arguments to the method are marshalled.
</summary>
<remarks>
If this field is specified, <see cref="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshalling" /> must not be specified
or must be set to <see cref="F:System.Runtime.InteropServices.StringMarshalling.Custom" />.
</remarks>
</member>
<member name="P:System.Runtime.InteropServices.LibraryImportAttribute.SetLastError">
<summary>
Gets or sets whether the callee sets an error (SetLastError on Windows or errno
on other platforms) before returning from the attributed method.
</summary>
</member>
<member name="T:System.Runtime.InteropServices.StringMarshalling">
<summary>
Specifies how strings should be marshalled for generated p/invokes
</summary>
</member>
<member name="F:System.Runtime.InteropServices.StringMarshalling.Custom">
<summary>
Indicates the user is suppling a specific marshaller in <see cref="P:System.Runtime.InteropServices.LibraryImportAttribute.StringMarshallingCustomType"/>.
</summary>
</member>
<member name="F:System.Runtime.InteropServices.StringMarshalling.Utf8">
<summary>
Use the platform-provided UTF-8 marshaller.
</summary>
</member>
<member name="F:System.Runtime.InteropServices.StringMarshalling.Utf16">
<summary>
Use the platform-provided UTF-16 marshaller.
</summary>
</member>
<member name="T:System.Collections.Generic.IAsyncEnumerable`1">
<summary>Exposes an enumerator that provides asynchronous iteration over values of a specified type.</summary>
<typeparam name="T">The type of values to enumerate.</typeparam>
</member>
<member name="M:System.Collections.Generic.IAsyncEnumerable`1.GetAsyncEnumerator(System.Threading.CancellationToken)">
<summary>Returns an enumerator that iterates asynchronously through the collection.</summary>
<param name="cancellationToken">A <see cref="T:System.Threading.CancellationToken"/> that may be used to cancel the asynchronous iteration.</param>
<returns>An enumerator that can be used to iterate asynchronously through the collection.</returns>
</member>
<member name="T:System.Collections.Generic.IAsyncEnumerator`1">
<summary>Supports a simple asynchronous iteration over a generic collection.</summary>
<typeparam name="T">The type of objects to enumerate.</typeparam>
</member>
<member name="M:System.Collections.Generic.IAsyncEnumerator`1.MoveNextAsync">
<summary>Advances the enumerator asynchronously to the next element of the collection.</summary>
<returns>
A <see cref="T:System.Threading.Tasks.ValueTask`1"/> that will complete with a result of <c>true</c> if the enumerator
was successfully advanced to the next element, or <c>false</c> if the enumerator has passed the end
of the collection.
</returns>
</member>
<member name="P:System.Collections.Generic.IAsyncEnumerator`1.Current">
<summary>Gets the element in the collection at the current position of the enumerator.</summary>
</member>
<member name="T:System.IAsyncDisposable">
<summary>Provides a mechanism for releasing unmanaged resources asynchronously.</summary>
</member>
<member name="M:System.IAsyncDisposable.DisposeAsync">
<summary>
Performs application-defined tasks associated with freeing, releasing, or
resetting unmanaged resources asynchronously.
</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.AllowNullAttribute">
<summary>Specifies that null is allowed as an input even if the corresponding type disallows it.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DisallowNullAttribute">
<summary>Specifies that null is disallowed as an input even if the corresponding type allows it.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MaybeNullAttribute">
<summary>Specifies that an output may be null even if the corresponding type disallows it.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullAttribute">
<summary>Specifies that an output will not be null even if the corresponding type allows it. Specifies that an input argument was not null when the call returns.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute">
<summary>Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue"/>, the parameter may be null even if the corresponding type disallows it.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.#ctor(System.Boolean)">
<summary>Initializes the attribute with the specified return value condition.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter may be null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue">
<summary>Gets the return value condition.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute">
<summary>Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue"/>, the parameter will not be null even if the corresponding type allows it.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.#ctor(System.Boolean)">
<summary>Initializes the attribute with the specified return value condition.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter will not be null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue">
<summary>Gets the return value condition.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute">
<summary>Specifies that the output will be non-null if the named parameter is non-null.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.#ctor(System.String)">
<summary>Initializes the attribute with the associated parameter name.</summary>
<param name="parameterName">
The associated parameter name. The output will be non-null if the argument to the parameter specified is non-null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.ParameterName">
<summary>Gets the associated parameter name.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute">
<summary>Applied to a method that will never return under any circumstance.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute">
<summary>Specifies that the method will not return if the associated Boolean parameter is passed the specified value.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.#ctor(System.Boolean)">
<summary>Initializes the attribute with the specified parameter value.</summary>
<param name="parameterValue">
The condition parameter value. Code after the method will be considered unreachable by diagnostics if the argument to
the associated parameter matches this value.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.ParameterValue">
<summary>Gets the condition parameter value.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute">
<summary>Specifies that the method or property will ensure that the listed field and property members have not-null values.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.#ctor(System.String)">
<summary>Initializes the attribute with a field or property member.</summary>
<param name="member">
The field or property member that is promised to be not-null.
</param>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.#ctor(System.String[])">
<summary>Initializes the attribute with the list of field and property members.</summary>
<param name="members">
The list of field and property members that are promised to be not-null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullAttribute.Members">
<summary>Gets field or property member names.</summary>
</member>
<member name="T:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute">
<summary>Specifies that the method or property will ensure that the listed field and property members have not-null values when returning with the specified return value condition.</summary>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.#ctor(System.Boolean,System.String)">
<summary>Initializes the attribute with the specified return value condition and a field or property member.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter will not be null.
</param>
<param name="member">
The field or property member that is promised to be not-null.
</param>
</member>
<member name="M:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.#ctor(System.Boolean,System.String[])">
<summary>Initializes the attribute with the specified return value condition and list of field and property members.</summary>
<param name="returnValue">
The return value condition. If the method returns this value, the associated parameter will not be null.
</param>
<param name="members">
The list of field and property members that are promised to be not-null.
</param>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.ReturnValue">
<summary>Gets the return value condition.</summary>
</member>
<member name="P:System.Diagnostics.CodeAnalysis.MemberNotNullWhenAttribute.Members">
<summary>Gets field or property member names.</summary>
</member>
</members>
</doc>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,341 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Prism.DryIoc.Wpf</name>
</assembly>
<members>
<member name="T:Prism.DryIoc.PrismApplication">
<summary>
Base application class that uses <see cref="T:Prism.DryIoc.DryIocContainerExtension"/> as it's container.
</summary>
</member>
<member name="M:Prism.DryIoc.PrismApplication.CreateContainerRules">
<summary>
Create <see cref="T:DryIoc.Rules" /> to alter behavior of <see cref="T:DryIoc.IContainer" />
</summary>
<returns>An instance of <see cref="T:DryIoc.Rules" /></returns>
</member>
<member name="M:Prism.DryIoc.PrismApplication.CreateContainerExtension">
<summary>
Create a new <see cref="T:Prism.DryIoc.DryIocContainerExtension"/> used by Prism.
</summary>
<returns>A new <see cref="T:Prism.DryIoc.DryIocContainerExtension"/>.</returns>
</member>
<member name="M:Prism.DryIoc.PrismApplication.RegisterFrameworkExceptionTypes">
<summary>
Registers the <see cref="T:System.Type"/>s of the Exceptions that are not considered
root exceptions by the <see cref="T:System.ExceptionExtensions"/>.
</summary>
</member>
<member name="T:Prism.DryIoc.PrismBootstrapper">
<summary>
Base bootstrapper class that uses <see cref="T:Prism.DryIoc.DryIocContainerExtension"/> as it's container.
</summary>
</member>
<member name="M:Prism.DryIoc.PrismBootstrapper.CreateContainerRules">
<summary>
Create <see cref="T:DryIoc.Rules" /> to alter behavior of <see cref="T:DryIoc.IContainer" />
</summary>
<returns>An instance of <see cref="T:DryIoc.Rules" /></returns>
</member>
<member name="M:Prism.DryIoc.PrismBootstrapper.CreateContainerExtension">
<summary>
Create a new <see cref="T:Prism.DryIoc.DryIocContainerExtension"/> used by Prism.
</summary>
<returns>A new <see cref="T:Prism.DryIoc.DryIocContainerExtension"/>.</returns>
</member>
<member name="M:Prism.DryIoc.PrismBootstrapper.RegisterFrameworkExceptionTypes">
<summary>
Registers the <see cref="T:System.Type"/>s of the Exceptions that are not considered
root exceptions by the <see cref="T:System.ExceptionExtensions"/>.
</summary>
</member>
<member name="T:Prism.DryIoc.Properties.Resources">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:Prism.DryIoc.Properties.Resources.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:Prism.DryIoc.Properties.Resources.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:Prism.DryIoc.Properties.Resources.NotOverwrittenGetModuleEnumeratorException">
<summary>
Looks up a localized string similar to The method &apos;GetModuleEnumerator&apos; of the bootstrapper must be overwritten in order to use the default module initialization logic..
</summary>
</member>
<member name="P:Prism.DryIoc.Properties.Resources.NullDryIocContainerBuilderException">
<summary>
Looks up a localized string similar to The ContainerBuilder is required and cannot be null..
</summary>
</member>
<member name="P:Prism.DryIoc.Properties.Resources.NullDryIocContainerException">
<summary>
Looks up a localized string similar to The IContainer is required and cannot be null..
</summary>
</member>
<member name="P:Prism.DryIoc.Properties.Resources.NullLoggerFacadeException">
<summary>
Looks up a localized string similar to The ILoggerFacade is required and cannot be null..
</summary>
</member>
<member name="P:Prism.DryIoc.Properties.Resources.NullModuleCatalogException">
<summary>
Looks up a localized string similar to The IModuleCatalog is required and cannot be null in order to initialize the modules..
</summary>
</member>
<member name="P:Prism.DryIoc.Properties.Resources.TypeMappingAlreadyRegistered">
<summary>
Looks up a localized string similar to Type &apos;{0}&apos; was already registered by the application. Skipping....
</summary>
</member>
<member name="T:Prism.DryIoc.DryIocContainerExtension">
<summary>
The <see cref="T:Prism.Ioc.IContainerExtension" /> Implementation to use with DryIoc
</summary>
</member>
<member name="P:Prism.DryIoc.DryIocContainerExtension.DefaultRules">
<summary>
Gets the Default DryIoc Container Rules used by Prism
</summary>
</member>
<member name="P:Prism.DryIoc.DryIocContainerExtension.Instance">
<summary>
The instance of the wrapped container
</summary>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.#ctor">
<summary>
Constructs a default instance of the <see cref="T:Prism.DryIoc.DryIocContainerExtension" />
</summary>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.#ctor(DryIoc.IContainer)">
<summary>
Constructs a new <see cref="T:Prism.DryIoc.DryIocContainerExtension" />
</summary>
<param name="container">The <see cref="T:DryIoc.IContainer" /> instance to use.</param>
</member>
<member name="P:Prism.DryIoc.DryIocContainerExtension.CurrentScope">
<summary>
Gets the current scope
</summary>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.FinalizeExtension">
<summary>
Used to perform any final steps for configuring the extension that may be required by the container.
</summary>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.RegisterInstance(System.Type,System.Object)">
<summary>
Registers an instance of a given <see cref="T:System.Type"/>
</summary>
<param name="type">The service <see cref="T:System.Type"/> that is being registered</param>
<param name="instance">The instance of the service or <see cref="T:System.Type" /></param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.RegisterInstance(System.Type,System.Object,System.String)">
<summary>
Registers an instance of a given <see cref="T:System.Type"/> with the specified name or key
</summary>
<param name="type">The service <see cref="T:System.Type"/> that is being registered</param>
<param name="instance">The instance of the service or <see cref="T:System.Type" /></param>
<param name="name">The name or key to register the service</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.RegisterSingleton(System.Type,System.Type)">
<summary>
Registers a Singleton with the given service and mapping to the specified implementation <see cref="T:System.Type" />.
</summary>
<param name="from">The service <see cref="T:System.Type" /></param>
<param name="to">The implementation <see cref="T:System.Type" /></param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.RegisterSingleton(System.Type,System.Type,System.String)">
<summary>
Registers a Singleton with the given service and mapping to the specified implementation <see cref="T:System.Type" />.
</summary>
<param name="from">The service <see cref="T:System.Type" /></param>
<param name="to">The implementation <see cref="T:System.Type" /></param>
<param name="name">The name or key to register the service</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.RegisterSingleton(System.Type,System.Func{System.Object})">
<summary>
Registers a Singleton with the given service <see cref="T:System.Type" /> factory delegate method.
</summary>
<param name="type">The service <see cref="T:System.Type" /></param>
<param name="factoryMethod">The delegate method.</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.RegisterSingleton(System.Type,System.Func{Prism.Ioc.IContainerProvider,System.Object})">
<summary>
Registers a Singleton with the given service <see cref="T:System.Type" /> factory delegate method.
</summary>
<param name="type">The service <see cref="T:System.Type" /></param>
<param name="factoryMethod">The delegate method using <see cref="T:Prism.Ioc.IContainerProvider"/>.</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.RegisterManySingleton(System.Type,System.Type[])">
<summary>
Registers a Singleton Service which implements service interfaces
</summary>
<param name="type">The implementation <see cref="T:System.Type" />.</param>
<param name="serviceTypes">The service <see cref="T:System.Type"/>'s.</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
<remarks>Registers all interfaces if none are specified.</remarks>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.RegisterScoped(System.Type,System.Type)">
<summary>
Registers a scoped service
</summary>
<param name="from">The service <see cref="T:System.Type" /></param>
<param name="to">The implementation <see cref="T:System.Type" /></param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.RegisterScoped(System.Type,System.Func{System.Object})">
<summary>
Registers a scoped service using a delegate method.
</summary>
<param name="type">The service <see cref="T:System.Type" /></param>
<param name="factoryMethod">The delegate method.</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.RegisterScoped(System.Type,System.Func{Prism.Ioc.IContainerProvider,System.Object})">
<summary>
Registers a scoped service using a delegate method.
</summary>
<param name="type">The service <see cref="T:System.Type"/>.</param>
<param name="factoryMethod">The delegate method using the <see cref="T:Prism.Ioc.IContainerProvider"/>.</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.Register(System.Type,System.Type)">
<summary>
Registers a Transient with the given service and mapping to the specified implementation <see cref="T:System.Type" />.
</summary>
<param name="from">The service <see cref="T:System.Type" /></param>
<param name="to">The implementation <see cref="T:System.Type" /></param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.Register(System.Type,System.Type,System.String)">
<summary>
Registers a Transient with the given service and mapping to the specified implementation <see cref="T:System.Type" />.
</summary>
<param name="from">The service <see cref="T:System.Type" /></param>
<param name="to">The implementation <see cref="T:System.Type" /></param>
<param name="name">The name or key to register the service</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.Register(System.Type,System.Func{System.Object})">
<summary>
Registers a Transient Service using a delegate method
</summary>
<param name="type">The service <see cref="T:System.Type" /></param>
<param name="factoryMethod">The delegate method.</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.Register(System.Type,System.Func{Prism.Ioc.IContainerProvider,System.Object})">
<summary>
Registers a Transient Service using a delegate method
</summary>
<param name="type">The service <see cref="T:System.Type" /></param>
<param name="factoryMethod">The delegate method using <see cref="T:Prism.Ioc.IContainerProvider"/>.</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.RegisterMany(System.Type,System.Type[])">
<summary>
Registers a Transient Service which implements service interfaces
</summary>
<param name="type">The implementing <see cref="T:System.Type" />.</param>
<param name="serviceTypes">The service <see cref="T:System.Type"/>'s.</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
<remarks>Registers all interfaces if none are specified.</remarks>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.Resolve(System.Type)">
<summary>
Resolves a given <see cref="T:System.Type"/>
</summary>
<param name="type">The service <see cref="T:System.Type"/></param>
<returns>The resolved Service <see cref="T:System.Type"/></returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.Resolve(System.Type,System.String)">
<summary>
Resolves a given <see cref="T:System.Type"/>
</summary>
<param name="type">The service <see cref="T:System.Type"/></param>
<param name="name">The service name/key used when registering the <see cref="T:System.Type"/></param>
<returns>The resolved Service <see cref="T:System.Type"/></returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.Resolve(System.Type,System.ValueTuple{System.Type,System.Object}[])">
<summary>
Resolves a given <see cref="T:System.Type"/>
</summary>
<param name="type">The service <see cref="T:System.Type"/></param>
<param name="parameters">Typed parameters to use when resolving the Service</param>
<returns>The resolved Service <see cref="T:System.Type"/></returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.Resolve(System.Type,System.String,System.ValueTuple{System.Type,System.Object}[])">
<summary>
Resolves a given <see cref="T:System.Type"/>
</summary>
<param name="type">The service <see cref="T:System.Type"/></param>
<param name="name">The service name/key used when registering the <see cref="T:System.Type"/></param>
<param name="parameters">Typed parameters to use when resolving the Service</param>
<returns>The resolved Service <see cref="T:System.Type"/></returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.IsRegistered(System.Type)">
<summary>
Determines if a given service is registered
</summary>
<param name="type">The service <see cref="T:System.Type" /></param>
<returns><c>true</c> if the service is registered.</returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.IsRegistered(System.Type,System.String)">
<summary>
Determines if a given service is registered with the specified name
</summary>
<param name="type">The service <see cref="T:System.Type" /></param>
<param name="name">The service name or key used</param>
<returns><c>true</c> if the service is registered.</returns>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.CreateScope">
<summary>
Creates a new Scope
</summary>
</member>
<member name="M:Prism.DryIoc.DryIocContainerExtension.CreateScopeInternal">
<summary>
Creates a new Scope and provides the updated ServiceProvider
</summary>
<returns>The Scoped <see cref="T:DryIoc.IResolverContext" />.</returns>
<remarks>
This should be called by custom implementations that Implement IServiceScopeFactory
</remarks>
</member>
<member name="T:Prism.DryIoc.PrismIocExtensions">
<summary>
Extensions help get the underlying <see cref="T:DryIoc.IContainer" />
</summary>
</member>
<member name="M:Prism.DryIoc.PrismIocExtensions.GetContainer(Prism.Ioc.IContainerProvider)">
<summary>
Gets the <see cref="T:DryIoc.IContainer" /> from the <see cref="T:Prism.Ioc.IContainerProvider" />
</summary>
<param name="containerProvider">The current <see cref="T:Prism.Ioc.IContainerProvider" /></param>
<returns>The underlying <see cref="T:DryIoc.IContainer" /></returns>
</member>
<member name="M:Prism.DryIoc.PrismIocExtensions.GetContainer(Prism.Ioc.IContainerRegistry)">
<summary>
Gets the <see cref="T:DryIoc.IContainer" /> from the <see cref="T:Prism.Ioc.IContainerProvider" />
</summary>
<param name="containerRegistry">The current <see cref="T:Prism.Ioc.IContainerRegistry" /></param>
<returns>The underlying <see cref="T:DryIoc.IContainer" /></returns>
</member>
</members>
</doc>

View File

@ -0,0 +1,324 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Prism.Unity.Wpf</name>
</assembly>
<members>
<member name="T:Prism.Unity.PrismApplication">
<summary>
Base application class that uses <see cref="T:Prism.Unity.UnityContainerExtension"/> as it's container.
</summary>
</member>
<member name="M:Prism.Unity.PrismApplication.CreateContainerExtension">
<summary>
Create a new <see cref="T:Prism.Unity.UnityContainerExtension"/> used by Prism.
</summary>
<returns>A new <see cref="T:Prism.Unity.UnityContainerExtension"/>.</returns>
</member>
<member name="M:Prism.Unity.PrismApplication.RegisterFrameworkExceptionTypes">
<summary>
Registers the <see cref="T:System.Type"/>s of the Exceptions that are not considered
root exceptions by the <see cref="T:System.ExceptionExtensions"/>.
</summary>
</member>
<member name="T:Prism.Unity.PrismBootstrapper">
<summary>
Base bootstrapper class that uses <see cref="T:Prism.Unity.UnityContainerExtension"/> as it's container.
</summary>
</member>
<member name="M:Prism.Unity.PrismBootstrapper.CreateContainerExtension">
<summary>
Create a new <see cref="T:Prism.Unity.UnityContainerExtension"/> used by Prism.
</summary>
<returns>A new <see cref="T:Prism.Unity.UnityContainerExtension"/>.</returns>
</member>
<member name="M:Prism.Unity.PrismBootstrapper.RegisterFrameworkExceptionTypes">
<summary>
Registers the <see cref="T:System.Type"/>s of the Exceptions that are not considered
root exceptions by the <see cref="T:System.ExceptionExtensions"/>.
</summary>
</member>
<member name="T:Prism.Unity.Properties.Resources">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:Prism.Unity.Properties.Resources.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:Prism.Unity.Properties.Resources.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:Prism.Unity.Properties.Resources.NotOverwrittenGetModuleEnumeratorException">
<summary>
Looks up a localized string similar to The method &apos;GetModuleEnumerator&apos; of the bootstrapper must be overwritten in order to use the default module initialization logic..
</summary>
</member>
<member name="P:Prism.Unity.Properties.Resources.NullLoggerFacadeException">
<summary>
Looks up a localized string similar to The ILoggerFacade is required and cannot be null..
</summary>
</member>
<member name="P:Prism.Unity.Properties.Resources.NullModuleCatalogException">
<summary>
Looks up a localized string similar to The IModuleCatalog is required and cannot be null in order to initialize the modules..
</summary>
</member>
<member name="P:Prism.Unity.Properties.Resources.NullUnityContainerException">
<summary>
Looks up a localized string similar to The IUnityContainer is required and cannot be null..
</summary>
</member>
<member name="P:Prism.Unity.Properties.Resources.SettingTheRegionManager">
<summary>
Looks up a localized string similar to Setting the RegionManager..
</summary>
</member>
<member name="P:Prism.Unity.Properties.Resources.TypeMappingAlreadyRegistered">
<summary>
Looks up a localized string similar to Type &apos;{0}&apos; was already registered by the application. Skipping....
</summary>
</member>
<member name="T:Prism.Unity.PrismIocExtensions">
<summary>
Extensions help get the underlying <see cref="T:Unity.IUnityContainer" />
</summary>
</member>
<member name="M:Prism.Unity.PrismIocExtensions.GetContainer(Prism.Ioc.IContainerProvider)">
<summary>
Gets the <see cref="T:Unity.IUnityContainer" /> from the <see cref="T:Prism.Ioc.IContainerProvider" />
</summary>
<param name="containerProvider">The current <see cref="T:Prism.Ioc.IContainerProvider" /></param>
<returns>The underlying <see cref="T:Unity.IUnityContainer" /></returns>
</member>
<member name="M:Prism.Unity.PrismIocExtensions.GetContainer(Prism.Ioc.IContainerRegistry)">
<summary>
Gets the <see cref="T:Unity.IUnityContainer" /> from the <see cref="T:Prism.Ioc.IContainerProvider" />
</summary>
<param name="containerRegistry">The current <see cref="T:Prism.Ioc.IContainerRegistry" /></param>
<returns>The underlying <see cref="T:Unity.IUnityContainer" /></returns>
</member>
<member name="T:Prism.Unity.UnityContainerExtension">
<summary>
The Unity implementation of the <see cref="T:Prism.Ioc.IContainerExtension" />
</summary>
</member>
<member name="P:Prism.Unity.UnityContainerExtension.Instance">
<summary>
The instance of the wrapped container
</summary>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.#ctor">
<summary>
Constructs a default <see cref="T:Prism.Unity.UnityContainerExtension" />
</summary>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.#ctor(Unity.IUnityContainer)">
<summary>
Constructs a <see cref="T:Prism.Unity.UnityContainerExtension" /> with the specified <see cref="T:Unity.IUnityContainer" />
</summary>
<param name="container"></param>
</member>
<member name="P:Prism.Unity.UnityContainerExtension.CurrentScope">
<summary>
Gets the current <see cref="T:Prism.Ioc.IScopedProvider"/>
</summary>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.FinalizeExtension">
<summary>
Used to perform any final steps for configuring the extension that may be required by the container.
</summary>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.RegisterInstance(System.Type,System.Object)">
<summary>
Registers an instance of a given <see cref="T:System.Type"/>
</summary>
<param name="type">The service <see cref="T:System.Type"/> that is being registered</param>
<param name="instance">The instance of the service or <see cref="T:System.Type" /></param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.RegisterInstance(System.Type,System.Object,System.String)">
<summary>
Registers an instance of a given <see cref="T:System.Type"/> with the specified name or key
</summary>
<param name="type">The service <see cref="T:System.Type"/> that is being registered</param>
<param name="instance">The instance of the service or <see cref="T:System.Type" /></param>
<param name="name">The name or key to register the service</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.RegisterSingleton(System.Type,System.Type)">
<summary>
Registers a Singleton with the given service and mapping to the specified implementation <see cref="T:System.Type" />.
</summary>
<param name="from">The service <see cref="T:System.Type" /></param>
<param name="to">The implementation <see cref="T:System.Type" /></param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.RegisterSingleton(System.Type,System.Type,System.String)">
<summary>
Registers a Singleton with the given service and mapping to the specified implementation <see cref="T:System.Type" />.
</summary>
<param name="from">The service <see cref="T:System.Type" /></param>
<param name="to">The implementation <see cref="T:System.Type" /></param>
<param name="name">The name or key to register the service</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.RegisterSingleton(System.Type,System.Func{System.Object})">
<summary>
Registers a Singleton with the given service <see cref="T:System.Type" /> factory delegate method.
</summary>
<param name="type">The service <see cref="T:System.Type" /></param>
<param name="factoryMethod">The delegate method.</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.RegisterSingleton(System.Type,System.Func{Prism.Ioc.IContainerProvider,System.Object})">
<summary>
Registers a Singleton with the given service <see cref="T:System.Type" /> factory delegate method.
</summary>
<param name="type">The service <see cref="T:System.Type" /></param>
<param name="factoryMethod">The delegate method using <see cref="T:Prism.Ioc.IContainerProvider"/>.</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.RegisterManySingleton(System.Type,System.Type[])">
<summary>
Registers a Singleton Service which implements service interfaces
</summary>
<param name="type">The implementation <see cref="T:System.Type" />.</param>
<param name="serviceTypes">The service <see cref="T:System.Type"/>'s.</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
<remarks>Registers all interfaces if none are specified.</remarks>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.Register(System.Type,System.Type)">
<summary>
Registers a Transient with the given service and mapping to the specified implementation <see cref="T:System.Type" />.
</summary>
<param name="from">The service <see cref="T:System.Type" /></param>
<param name="to">The implementation <see cref="T:System.Type" /></param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.Register(System.Type,System.Type,System.String)">
<summary>
Registers a Transient with the given service and mapping to the specified implementation <see cref="T:System.Type" />.
</summary>
<param name="from">The service <see cref="T:System.Type" /></param>
<param name="to">The implementation <see cref="T:System.Type" /></param>
<param name="name">The name or key to register the service</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.Register(System.Type,System.Func{System.Object})">
<summary>
Registers a Transient Service using a delegate method
</summary>
<param name="type">The service <see cref="T:System.Type" /></param>
<param name="factoryMethod">The delegate method.</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.Register(System.Type,System.Func{Prism.Ioc.IContainerProvider,System.Object})">
<summary>
Registers a Transient Service using a delegate method
</summary>
<param name="type">The service <see cref="T:System.Type" /></param>
<param name="factoryMethod">The delegate method using <see cref="T:Prism.Ioc.IContainerProvider"/>.</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.RegisterMany(System.Type,System.Type[])">
<summary>
Registers a Transient Service which implements service interfaces
</summary>
<param name="type">The implementing <see cref="T:System.Type" />.</param>
<param name="serviceTypes">The service <see cref="T:System.Type"/>'s.</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
<remarks>Registers all interfaces if none are specified.</remarks>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.RegisterScoped(System.Type,System.Type)">
<summary>
Registers a scoped service
</summary>
<param name="from">The service <see cref="T:System.Type" /></param>
<param name="to">The implementation <see cref="T:System.Type" /></param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.RegisterScoped(System.Type,System.Func{System.Object})">
<summary>
Registers a scoped service using a delegate method.
</summary>
<param name="type">The service <see cref="T:System.Type" /></param>
<param name="factoryMethod">The delegate method.</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.RegisterScoped(System.Type,System.Func{Prism.Ioc.IContainerProvider,System.Object})">
<summary>
Registers a scoped service using a delegate method.
</summary>
<param name="type">The service <see cref="T:System.Type"/>.</param>
<param name="factoryMethod">The delegate method.</param>
<returns>The <see cref="T:Prism.Ioc.IContainerRegistry" /> instance</returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.Resolve(System.Type)">
<summary>
Resolves a given <see cref="T:System.Type"/>
</summary>
<param name="type">The service <see cref="T:System.Type"/></param>
<returns>The resolved Service <see cref="T:System.Type"/></returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.Resolve(System.Type,System.String)">
<summary>
Resolves a given <see cref="T:System.Type"/>
</summary>
<param name="type">The service <see cref="T:System.Type"/></param>
<param name="name">The service name/key used when registering the <see cref="T:System.Type"/></param>
<returns>The resolved Service <see cref="T:System.Type"/></returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.Resolve(System.Type,System.ValueTuple{System.Type,System.Object}[])">
<summary>
Resolves a given <see cref="T:System.Type"/>
</summary>
<param name="type">The service <see cref="T:System.Type"/></param>
<param name="parameters">Typed parameters to use when resolving the Service</param>
<returns>The resolved Service <see cref="T:System.Type"/></returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.Resolve(System.Type,System.String,System.ValueTuple{System.Type,System.Object}[])">
<summary>
Resolves a given <see cref="T:System.Type"/>
</summary>
<param name="type">The service <see cref="T:System.Type"/></param>
<param name="name">The service name/key used when registering the <see cref="T:System.Type"/></param>
<param name="parameters">Typed parameters to use when resolving the Service</param>
<returns>The resolved Service <see cref="T:System.Type"/></returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.IsRegistered(System.Type)">
<summary>
Determines if a given service is registered
</summary>
<param name="type">The service <see cref="T:System.Type" /></param>
<returns><c>true</c> if the service is registered.</returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.IsRegistered(System.Type,System.String)">
<summary>
Determines if a given service is registered with the specified name
</summary>
<param name="type">The service <see cref="T:System.Type" /></param>
<param name="name">The service name or key used</param>
<returns><c>true</c> if the service is registered.</returns>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.CreateScope">
<summary>
Creates a new Scope
</summary>
</member>
<member name="M:Prism.Unity.UnityContainerExtension.CreateScopeInternal">
<summary>
Creates a new Scope and provides the updated ServiceProvider
</summary>
<returns>A child <see cref="T:Unity.IUnityContainer" />.</returns>
<remarks>
This should be called by custom implementations that Implement IServiceScopeFactory
</remarks>
</member>
</members>
</doc>

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Prism.Wpf" publicKeyToken="40ee6c3a2184dc59" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.537.60525" newVersion="9.0.537.60525" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Prism" publicKeyToken="40ee6c3a2184dc59" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.537.60525" newVersion="9.0.537.60525" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="DryIoc" publicKeyToken="dfbf2bd50fcf7768" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.4.3.0" newVersion="5.4.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Prism.Container.Abstractions" publicKeyToken="40ee6c3a2184dc59" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.106.9543" newVersion="9.0.106.9543" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.1" newVersion="8.0.0.1" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,200 @@
<?xml version="1.0" encoding="utf-8"?><doc>
<assembly>
<name>System.Runtime.CompilerServices.Unsafe</name>
</assembly>
<members>
<member name="T:System.Runtime.CompilerServices.Unsafe">
<summary>Contains generic, low-level functionality for manipulating pointers.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.Int32)">
<summary>Adds an element offset to the given reference.</summary>
<param name="source">The reference to add the offset to.</param>
<param name="elementOffset">The offset to add.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the addition of offset to pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.IntPtr)">
<summary>Adds an element offset to the given reference.</summary>
<param name="source">The reference to add the offset to.</param>
<param name="elementOffset">The offset to add.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the addition of offset to pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AddByteOffset``1(``0@,System.IntPtr)">
<summary>Adds a byte offset to the given reference.</summary>
<param name="source">The reference to add the offset to.</param>
<param name="byteOffset">The offset to add.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the addition of byte offset to pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AreSame``1(``0@,``0@)">
<summary>Determines whether the specified references point to the same location.</summary>
<param name="left">The first reference to compare.</param>
<param name="right">The second reference to compare.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>true if <paramref name="left">left</paramref> and <paramref name="right">right</paramref> point to the same location; otherwise, false.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.As``1(System.Object)">
<summary>Casts the given object to the specified type.</summary>
<param name="o">The object to cast.</param>
<typeparam name="T">The type which the object will be cast to.</typeparam>
<returns>The original object, casted to the given type.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.As``2(``0@)">
<summary>Reinterprets the given reference as a reference to a value of type <typeparamref name="TTo">TTo</typeparamref>.</summary>
<param name="source">The reference to reinterpret.</param>
<typeparam name="TFrom">The type of reference to reinterpret..</typeparam>
<typeparam name="TTo">The desired type of the reference.</typeparam>
<returns>A reference to a value of type <typeparamref name="TTo">TTo</typeparamref>.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AsPointer``1(``0@)">
<summary>Returns a pointer to the given by-ref parameter.</summary>
<param name="value">The object whose pointer is obtained.</param>
<typeparam name="T">The type of object.</typeparam>
<returns>A pointer to the given value.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AsRef``1(System.Void*)">
<summary>Reinterprets the given location as a reference to a value of type <typeparamref name="T">T</typeparamref>.</summary>
<param name="source">The location of the value to reference.</param>
<typeparam name="T">The type of the interpreted location.</typeparam>
<returns>A reference to a value of type <typeparamref name="T">T</typeparamref>.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.ByteOffset``1(``0@,``0@)">
<summary>Determines the byte offset from origin to target from the given references.</summary>
<param name="origin">The reference to origin.</param>
<param name="target">The reference to target.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>Byte offset from origin to target i.e. <paramref name="target">target</paramref> - <paramref name="origin">origin</paramref>.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Copy``1(System.Void*,``0@)">
<summary>Copies a value of type <typeparamref name="T">T</typeparamref> to the given location.</summary>
<param name="destination">The location to copy to.</param>
<param name="source">A reference to the value to copy.</param>
<typeparam name="T">The type of value to copy.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Copy``1(``0@,System.Void*)">
<summary>Copies a value of type <typeparamref name="T">T</typeparamref> to the given location.</summary>
<param name="destination">The location to copy to.</param>
<param name="source">A pointer to the value to copy.</param>
<typeparam name="T">The type of value to copy.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Byte@,System.Byte@,System.UInt32)">
<summary>Copies bytes from the source address to the destination address.</summary>
<param name="destination">The destination address to copy to.</param>
<param name="source">The source address to copy from.</param>
<param name="byteCount">The number of bytes to copy.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Void*,System.Void*,System.UInt32)">
<summary>Copies bytes from the source address to the destination address.</summary>
<param name="destination">The destination address to copy to.</param>
<param name="source">The source address to copy from.</param>
<param name="byteCount">The number of bytes to copy.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Void*,System.Void*,System.UInt32)">
<summary>Copies bytes from the source address to the destination address
without assuming architecture dependent alignment of the addresses.</summary>
<param name="destination">The destination address to copy to.</param>
<param name="source">The source address to copy from.</param>
<param name="byteCount">The number of bytes to copy.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Byte@,System.Byte@,System.UInt32)">
<summary>Copies bytes from the source address to the destination address
without assuming architecture dependent alignment of the addresses.</summary>
<param name="destination">The destination address to copy to.</param>
<param name="source">The source address to copy from.</param>
<param name="byteCount">The number of bytes to copy.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlock(System.Byte@,System.Byte,System.UInt32)">
<summary>Initializes a block of memory at the given location with a given initial value.</summary>
<param name="startAddress">The address of the start of the memory block to initialize.</param>
<param name="value">The value to initialize the block to.</param>
<param name="byteCount">The number of bytes to initialize.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlock(System.Void*,System.Byte,System.UInt32)">
<summary>Initializes a block of memory at the given location with a given initial value.</summary>
<param name="startAddress">The address of the start of the memory block to initialize.</param>
<param name="value">The value to initialize the block to.</param>
<param name="byteCount">The number of bytes to initialize.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Byte@,System.Byte,System.UInt32)">
<summary>Initializes a block of memory at the given location with a given initial value
without assuming architecture dependent alignment of the address.</summary>
<param name="startAddress">The address of the start of the memory block to initialize.</param>
<param name="value">The value to initialize the block to.</param>
<param name="byteCount">The number of bytes to initialize.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Void*,System.Byte,System.UInt32)">
<summary>Initializes a block of memory at the given location with a given initial value
without assuming architecture dependent alignment of the address.</summary>
<param name="startAddress">The address of the start of the memory block to initialize.</param>
<param name="value">The value to initialize the block to.</param>
<param name="byteCount">The number of bytes to initialize.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Read``1(System.Void*)">
<summary>Reads a value of type <typeparamref name="T">T</typeparamref> from the given location.</summary>
<param name="source">The location to read from.</param>
<typeparam name="T">The type to read.</typeparam>
<returns>An object of type <typeparamref name="T">T</typeparamref> read from the given location.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.ReadUnaligned``1(System.Byte@)">
<summary>Reads a value of type <typeparamref name="T">T</typeparamref> from the given location
without assuming architecture dependent alignment of the addresses.</summary>
<param name="source">The location to read from.</param>
<typeparam name="T">The type to read.</typeparam>
<returns>An object of type <typeparamref name="T">T</typeparamref> read from the given location.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.ReadUnaligned``1(System.Void*)">
<summary>Reads a value of type <typeparamref name="T">T</typeparamref> from the given location
without assuming architecture dependent alignment of the addresses.</summary>
<param name="source">The location to read from.</param>
<typeparam name="T">The type to read.</typeparam>
<returns>An object of type <typeparamref name="T">T</typeparamref> read from the given location.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.SizeOf``1">
<summary>Returns the size of an object of the given type parameter.</summary>
<typeparam name="T">The type of object whose size is retrieved.</typeparam>
<returns>The size of an object of type <typeparamref name="T">T</typeparamref>.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.Int32)">
<summary>Subtracts an element offset from the given reference.</summary>
<param name="source">The reference to subtract the offset from.</param>
<param name="elementOffset">The offset to subtract.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the subraction of offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.IntPtr)">
<summary>Subtracts an element offset from the given reference.</summary>
<param name="source">The reference to subtract the offset from.</param>
<param name="elementOffset">The offset to subtract.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the subraction of offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.SubtractByteOffset``1(``0@,System.IntPtr)">
<summary>Subtracts a byte offset from the given reference.</summary>
<param name="source">The reference to subtract the offset from.</param>
<param name="byteOffset"></param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the subraction of byte offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Write``1(System.Void*,``0)">
<summary>Writes a value of type <typeparamref name="T">T</typeparamref> to the given location.</summary>
<param name="destination">The location to write to.</param>
<param name="value">The value to write.</param>
<typeparam name="T">The type of value to write.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.WriteUnaligned``1(System.Byte@,``0)">
<summary>Writes a value of type <typeparamref name="T">T</typeparamref> to the given location
without assuming architecture dependent alignment of the addresses.</summary>
<param name="destination">The location to write to.</param>
<param name="value">The value to write.</param>
<typeparam name="T">The type of value to write.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.WriteUnaligned``1(System.Void*,``0)">
<summary>Writes a value of type <typeparamref name="T">T</typeparamref> to the given location
without assuming architecture dependent alignment of the addresses.</summary>
<param name="destination">The location to write to.</param>
<param name="value">The value to write.</param>
<typeparam name="T">The type of value to write.</typeparam>
</member>
</members>
</doc>

View File

@ -0,0 +1,166 @@
<?xml version="1.0" encoding="utf-8"?><doc>
<assembly>
<name>System.Threading.Tasks.Extensions</name>
</assembly>
<members>
<member name="T:System.Runtime.CompilerServices.ValueTaskAwaiter`1">
<typeparam name="TResult"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.ValueTaskAwaiter`1.GetResult">
<returns></returns>
</member>
<member name="P:System.Runtime.CompilerServices.ValueTaskAwaiter`1.IsCompleted">
<returns></returns>
</member>
<member name="M:System.Runtime.CompilerServices.ValueTaskAwaiter`1.OnCompleted(System.Action)">
<param name="continuation"></param>
</member>
<member name="M:System.Runtime.CompilerServices.ValueTaskAwaiter`1.UnsafeOnCompleted(System.Action)">
<param name="continuation"></param>
</member>
<member name="T:System.Threading.Tasks.ValueTask`1">
<summary>Provides a value type that wraps a <see cref="Task{TResult}"></see> and a <typeparamref name="TResult">TResult</typeparamref>, only one of which is used.</summary>
<typeparam name="TResult">The result.</typeparam>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.#ctor(System.Threading.Tasks.Task{`0})">
<summary>Initializes a new instance of the <see cref="ValueTask{TResult}"></see> class using the supplied task that represents the operation.</summary>
<param name="task">The task.</param>
<exception cref="T:System.ArgumentNullException">The <paramref name="task">task</paramref> argument is null.</exception>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.#ctor(`0)">
<summary>Initializes a new instance of the <see cref="ValueTask{TResult}"></see> class using the supplied result of a successful operation.</summary>
<param name="result">The result.</param>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.AsTask">
<summary>Retrieves a <see cref="Task{TResult}"></see> object that represents this <see cref="ValueTask{TResult}"></see>.</summary>
<returns>The <see cref="Task{TResult}"></see> object that is wrapped in this <see cref="ValueTask{TResult}"></see> if one exists, or a new <see cref="Task{TResult}"></see> object that represents the result.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.ConfigureAwait(System.Boolean)">
<summary>Configures an awaiter for this value.</summary>
<param name="continueOnCapturedContext">true to attempt to marshal the continuation back to the captured context; otherwise, false.</param>
<returns>The configured awaiter.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.CreateAsyncMethodBuilder">
<summary>Creates a method builder for use with an async method.</summary>
<returns>The created builder.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.Equals(System.Object)">
<summary>Determines whether the specified object is equal to the current object.</summary>
<param name="obj">The object to compare with the current object.</param>
<returns>true if the specified object is equal to the current object; otherwise, false.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.Equals(System.Threading.Tasks.ValueTask{`0})">
<summary>Determines whether the specified <see cref="ValueTask{TResult}"></see> object is equal to the current <see cref="ValueTask{TResult}"></see> object.</summary>
<param name="other">The object to compare with the current object.</param>
<returns>true if the specified object is equal to the current object; otherwise, false.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.GetAwaiter">
<summary>Creates an awaiter for this value.</summary>
<returns>The awaiter.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.GetHashCode">
<summary>Returns the hash code for this instance.</summary>
<returns>The hash code for the current object.</returns>
</member>
<member name="P:System.Threading.Tasks.ValueTask`1.IsCanceled">
<summary>Gets a value that indicates whether this object represents a canceled operation.</summary>
<returns>true if this object represents a canceled operation; otherwise, false.</returns>
</member>
<member name="P:System.Threading.Tasks.ValueTask`1.IsCompleted">
<summary>Gets a value that indicates whether this object represents a completed operation.</summary>
<returns>true if this object represents a completed operation; otherwise, false.</returns>
</member>
<member name="P:System.Threading.Tasks.ValueTask`1.IsCompletedSuccessfully">
<summary>Gets a value that indicates whether this object represents a successfully completed operation.</summary>
<returns>true if this object represents a successfully completed operation; otherwise, false.</returns>
</member>
<member name="P:System.Threading.Tasks.ValueTask`1.IsFaulted">
<summary>Gets a value that indicates whether this object represents a failed operation.</summary>
<returns>true if this object represents a failed operation; otherwise, false.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.op_Equality(System.Threading.Tasks.ValueTask{`0},System.Threading.Tasks.ValueTask{`0})">
<summary>Compares two values for equality.</summary>
<param name="left">The first value to compare.</param>
<param name="right">The second value to compare.</param>
<returns>true if the two <see cref="ValueTask{TResult}"></see> values are equal; otherwise, false.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.op_Inequality(System.Threading.Tasks.ValueTask{`0},System.Threading.Tasks.ValueTask{`0})">
<summary>Determines whether two <see cref="ValueTask{TResult}"></see> values are unequal.</summary>
<param name="left">The first value to compare.</param>
<param name="right">The seconed value to compare.</param>
<returns>true if the two <see cref="ValueTask{TResult}"></see> values are not equal; otherwise, false.</returns>
</member>
<member name="P:System.Threading.Tasks.ValueTask`1.Result">
<summary>Gets the result.</summary>
<returns>The result.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.ToString">
<summary>Returns a string that represents the current object.</summary>
<returns>A string that represents the current object.</returns>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute">
</member>
<member name="M:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute.#ctor(System.Type)">
<param name="builderType"></param>
</member>
<member name="P:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute.BuilderType">
<returns></returns>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1">
<typeparam name="TResult"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.AwaitOnCompleted``2(``0@,``1@)">
<param name="awaiter"></param>
<param name="stateMachine"></param>
<typeparam name="TAwaiter"></typeparam>
<typeparam name="TStateMachine"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.AwaitUnsafeOnCompleted``2(``0@,``1@)">
<param name="awaiter"></param>
<param name="stateMachine"></param>
<typeparam name="TAwaiter"></typeparam>
<typeparam name="TStateMachine"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.Create">
<returns></returns>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.SetException(System.Exception)">
<param name="exception"></param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.SetResult(`0)">
<param name="result"></param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)">
<param name="stateMachine"></param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.Start``1(``0@)">
<param name="stateMachine"></param>
<typeparam name="TStateMachine"></typeparam>
</member>
<member name="P:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.Task">
<returns></returns>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter">
<typeparam name="TResult"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult">
<returns></returns>
</member>
<member name="P:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.IsCompleted">
<returns></returns>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.OnCompleted(System.Action)">
<param name="continuation"></param>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.UnsafeOnCompleted(System.Action)">
<param name="continuation"></param>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1">
<typeparam name="TResult"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.GetAwaiter">
<returns></returns>
</member>
</members>
</doc>

View File

@ -0,0 +1,8 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.ValueTuple</name>
</assembly>
<members>
</members>
</doc>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8" ?>
<log4net >
<root>
<!-- 控制级别由低到高ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
<level value="ALL"/>
<appender-ref ref="ErrorRollingFileAppender"/>
<appender-ref ref="WarnRollingFileAppender"/>
<appender-ref ref="InfoRollingFileAppender"/>
<appender-ref ref="DebugRollingFileAppender"/>
</root>
<!--一般错误日志定义,用于记录已知需处理的与未捕获的异常-->
<!--日志输出格式:[时间]:类名 线程号 消息-->
<appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender">
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR"/>
<levelMax value="FATAL"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter"/>
<file value="Logs/"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="100" />
<maxFileSize value="10240" />
<rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd//&quot;Error.log&quot;"/>
<staticLogFileName value="false"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="【%d{HH:mm:ss.fff}】 %c T%t %n%m%n"/>
</layout>
</appender>
<!--警告日志定义,用于记录已知不需处理的异常,系统警告信息-->
<!--日志输出格式:[时间]:类名 线程号 消息-->
<appender name="WarnRollingFileAppender" type="log4net.Appender.RollingFileAppender">
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="WARN"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter"/>
<file value="Logs/"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="100" />
<maxFileSize value="10240" />
<rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd//&quot;Warn.log&quot;"/>
<staticLogFileName value="false"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%d{HH:mm:ss.fff}] %c T%t %m%n"/>
</layout>
</appender>
<!--信息日志定义,用于记录用户相关信息-->
<!--日志输出格式:[时间]:消息-->
<appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender">
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="INFO"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter"/>
<file value="Logs/"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="100" />
<maxFileSize value="10240" />
<rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd//&quot;Info.log&quot;"/>
<staticLogFileName value="false"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%d{HH:mm:ss}] (%c) %m%n"/>
</layout>
</appender>
<!--信息日志定义,用于收集开发调试信息-->
<!--日志输出格式:[时间]:类名 线程号 消息-->
<appender name="DebugRollingFileAppender" type="log4net.Appender.RollingFileAppender">
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="DEBUG"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter"/>
<file value="Logs/"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="100" />
<maxFileSize value="10240" />
<rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd//&quot;Debug.log&quot;"/>
<staticLogFileName value="false"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%d{HH:mm:ss.fff}] %c T%t %m%n"/>
</layout>
</appender>
</log4net>

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8" ?>
<log4net >
<root>
<!-- 控制级别由低到高ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
<level value="ALL"/>
<appender-ref ref="ErrorRollingFileAppender"/>
<appender-ref ref="WarnRollingFileAppender"/>
<appender-ref ref="InfoRollingFileAppender"/>
<appender-ref ref="DebugRollingFileAppender"/>
</root>
<!--一般错误日志定义,用于记录已知需处理的与未捕获的异常-->
<!--日志输出格式:[时间]:类名 线程号 消息-->
<appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender">
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR"/>
<levelMax value="FATAL"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter"/>
<file value="Logs/"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="100" />
<maxFileSize value="10240" />
<rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd//&quot;Error.log&quot;"/>
<staticLogFileName value="false"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="【%d{HH:mm:ss.fff}】 %c T%t %n%m%n"/>
</layout>
</appender>
<!--警告日志定义,用于记录已知不需处理的异常,系统警告信息-->
<!--日志输出格式:[时间]:类名 线程号 消息-->
<appender name="WarnRollingFileAppender" type="log4net.Appender.RollingFileAppender">
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="WARN"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter"/>
<file value="Logs/"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="100" />
<maxFileSize value="10240" />
<rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd//&quot;Warn.log&quot;"/>
<staticLogFileName value="false"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%d{HH:mm:ss.fff}] %c T%t %m%n"/>
</layout>
</appender>
<!--信息日志定义,用于记录用户相关信息-->
<!--日志输出格式:[时间]:消息-->
<appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender">
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="INFO"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter"/>
<file value="Logs/"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="100" />
<maxFileSize value="10240" />
<rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd//&quot;Info.log&quot;"/>
<staticLogFileName value="false"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%d{HH:mm:ss}] (%c) %m%n"/>
</layout>
</appender>
<!--信息日志定义,用于收集开发调试信息-->
<!--日志输出格式:[时间]:类名 线程号 消息-->
<appender name="DebugRollingFileAppender" type="log4net.Appender.RollingFileAppender">
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="DEBUG"/>
</filter>
<filter type="log4net.Filter.DenyAllFilter"/>
<file value="Logs/"/>
<appendToFile value="true"/>
<maxSizeRollBackups value="100" />
<maxFileSize value="10240" />
<rollingStyle value="Date"/>
<datePattern value="yyyy-MM-dd//&quot;Debug.log&quot;"/>
<staticLogFileName value="false"/>
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%d{HH:mm:ss.fff}] %c T%t %m%n"/>
</layout>
</appender>
</log4net>

View File

@ -0,0 +1,4 @@
// <autogenerated />
using System;
using System.Reflection;
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]

View File

@ -0,0 +1 @@
42c43b4a66e8d45e078c86c61aaca78db4ff6f419ade1145e731c58127ec54f4

View File

@ -0,0 +1,57 @@
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\log4net.config
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\SWS.Commons.dll.config
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\SWS.Commons.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\SWS.Commons.pdb
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\DryIoc.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\INIFileParser.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\log4net.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Microsoft.Bcl.AsyncInterfaces.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Microsoft.Extensions.DependencyInjection.Abstractions.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Microsoft.Xaml.Behaviors.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Newtonsoft.Json.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Prism.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Prism.DryIoc.Wpf.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Prism.Unity.Wpf.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Prism.Wpf.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\SWS.Model.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\System.Threading.Tasks.Extensions.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\System.ValueTuple.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Telerik.Windows.Controls.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Unity.Abstractions.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Unity.Container.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\SWS.Model.pdb
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\DryIoc.xml
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\INIFileParser.xml
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\log4net.pdb
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\log4net.xml
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Microsoft.Bcl.AsyncInterfaces.xml
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Microsoft.Extensions.DependencyInjection.Abstractions.xml
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Microsoft.Xaml.Behaviors.pdb
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Microsoft.Xaml.Behaviors.xml
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Newtonsoft.Json.xml
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Prism.pdb
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Prism.xml
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Prism.DryIoc.Wpf.pdb
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Prism.DryIoc.Wpf.xml
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Prism.Unity.Wpf.pdb
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Prism.Unity.Wpf.xml
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Prism.Wpf.pdb
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Prism.Wpf.xml
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\System.Threading.Tasks.Extensions.xml
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\System.ValueTuple.xml
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Telerik.Windows.Controls.xml
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Unity.Abstractions.pdb
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\Unity.Container.pdb
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\de\Telerik.Windows.Controls.resources.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\es\Telerik.Windows.Controls.resources.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\fr\Telerik.Windows.Controls.resources.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\it\Telerik.Windows.Controls.resources.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\nl\Telerik.Windows.Controls.resources.dll
E:\Di-Electrical\c#前端\SWS.Commons\bin\Debug\tr\Telerik.Windows.Controls.resources.dll
E:\Di-Electrical\c#前端\SWS.Commons\obj\Debug\SWS.Commons.csproj.AssemblyReference.cache
E:\Di-Electrical\c#前端\SWS.Commons\obj\Debug\SWS.Commons.csproj.CoreCompileInputs.cache
E:\Di-Electrical\c#前端\SWS.Commons\obj\Debug\SWS.Comm.9AB1BE43.Up2Date
E:\Di-Electrical\c#前端\SWS.Commons\obj\Debug\SWS.Commons.dll
E:\Di-Electrical\c#前端\SWS.Commons\obj\Debug\SWS.Commons.pdb

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="DryIoc.dll" version="4.7.7" targetFramework="net48" />
<package id="log4net" version="3.1.0" targetFramework="net48" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="8.0.0" targetFramework="net48" />
<package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="8.0.1" targetFramework="net48" />
<package id="Microsoft.Xaml.Behaviors.Wpf" version="1.1.122" targetFramework="net48" />
<package id="Prism.Core" version="8.1.97" targetFramework="net48" />
<package id="Prism.DryIoc" version="8.1.97" targetFramework="net48" />
<package id="Prism.Unity" version="8.1.97" targetFramework="net48" />
<package id="Prism.Wpf" version="8.1.97" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net48" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net48" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net48" />
<package id="Unity.Abstractions" version="5.11.7" targetFramework="net48" />
<package id="Unity.Container" version="5.11.11" targetFramework="net48" />
</packages>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,79 @@
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Shapes;
namespace SWS.CustomControl
{
[TemplatePart(Name = "PART_Icon", Type = typeof(Path))]
[TemplatePart(Name = "PART_Content", Type = typeof(ContentPresenter))]
public class IconButton : Button
{
static IconButton()
{
DefaultStyleKeyProperty.OverrideMetadata(
typeof(IconButton),
new FrameworkPropertyMetadata(typeof(IconButton)));
}
#region
// 矢量路径数据
public static readonly DependencyProperty IconDataProperty =
DependencyProperty.Register(
"IconData",
typeof(Geometry),
typeof(IconButton),
new FrameworkPropertyMetadata(null));
// 图标尺寸
public static readonly DependencyProperty IconSizeProperty =
DependencyProperty.Register(
"IconSize",
typeof(double),
typeof(IconButton),
new FrameworkPropertyMetadata(16.0));
// 图标位置
public static readonly DependencyProperty IconPlacementProperty =
DependencyProperty.Register(
"IconPlacement",
typeof(Dock),
typeof(IconButton),
new FrameworkPropertyMetadata(Dock.Left));
// 图标与文字间距
public static readonly DependencyProperty IconMarginProperty =
DependencyProperty.Register(
"IconMargin",
typeof(Thickness),
typeof(IconButton),
new FrameworkPropertyMetadata(new Thickness(0, 0, 5, 0)));
#endregion
#region
public Geometry IconData
{
get => (Geometry)GetValue(IconDataProperty);
set => SetValue(IconDataProperty, value);
}
public double IconSize
{
get => (double)GetValue(IconSizeProperty);
set => SetValue(IconSizeProperty, value);
}
public Dock IconPlacement
{
get => (Dock)GetValue(IconPlacementProperty);
set => SetValue(IconPlacementProperty, value);
}
public Thickness IconMargin
{
get => (Thickness)GetValue(IconMarginProperty);
set => SetValue(IconMarginProperty, value);
}
#endregion
}
}

View File

@ -0,0 +1,45 @@
using System;
using System.Collections.ObjectModel;
using System.Globalization;
using System.Windows.Data;
using SWS.Model;
namespace SWS.CustomControl
{
public class CollectionToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
ObservableCollection<ec_dataitemdetail> WHCPUs = value as ObservableCollection<ec_dataitemdetail>;
if (WHCPUs != null)
{
string sWHCPU = "";
for (int i = 0; i < WHCPUs.Count; i++)
{
if (i!= WHCPUs.Count-1)
{
if (WHCPUs[i] != null)
{
sWHCPU = sWHCPU + WHCPUs[i].DataItemCode + "|";
}
}
else
{
if (WHCPUs[i] != null)
{
sWHCPU = sWHCPU + WHCPUs[i].DataItemCode;
}
}
}
return sWHCPU;
}
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}

View File

@ -0,0 +1,60 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace SWS.CustomControl
{
public static class DoubleUtil
{
internal const double DBL_EPSILON = 2.2204460492503131e-016; /* smallest such that 1.0+DBL_EPSILON != 1.0 */
internal const float FLT_MIN = 1.175494351e-38F; /* Number close to zero, where float.MinValue is -float.MaxValue */
public static bool IsZero(double value) => Math.Abs(value) < 10.0 * DBL_EPSILON;
public static bool AreClose(double value1, double value2)
{
if (value1 == value2) return true;
double eps = (Math.Abs(value1) + Math.Abs(value2) + 10.0) * DBL_EPSILON;
double delta = value1 - value2;
return (-eps < delta) && (eps > delta);
}
public static bool LessThan(double value1, double value2) => (value1 < value2) && !AreClose(value1, value2);
public static bool GreaterThan(double value1, double value2) => (value1 > value2) && !AreClose(value1, value2);
public static bool LessThanOrClose(double value1, double value2) => (value1 < value2) || AreClose(value1, value2);
public static bool GreaterThanOrClose(double value1, double value2) => (value1 > value2) || AreClose(value1, value2);
[StructLayout(LayoutKind.Explicit)]
private struct NanUnion
{
[FieldOffset(0)]
internal double DoubleValue;
[FieldOffset(0)]
internal UInt64 UintValue;
}
public static bool IsNaN(double value)
{
NanUnion t = new NanUnion();
t.DoubleValue = value;
UInt64 exp = t.UintValue & 0xfff0000000000000;
UInt64 man = t.UintValue & 0x000fffffffffffff;
return (exp == 0x7ff0000000000000 || exp == 0xfff0000000000000) && (man != 0);
}
public static bool IsOne(double value)
{
return Math.Abs(value - 1.0) < 10.0 * DBL_EPSILON;
}
}
}

View File

@ -0,0 +1,113 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows;
namespace SWS.CustomControl
{
public class ElementHelper : DependencyObject
{
public static readonly DependencyProperty CornerRadiusProperty =
DependencyProperty.RegisterAttached("CornerRadius", typeof(CornerRadius), typeof(ElementHelper),
new PropertyMetadata(new CornerRadius(0)));
public static readonly DependencyProperty WatermarkProperty =
DependencyProperty.RegisterAttached("Watermark", typeof(string), typeof(ElementHelper),
new PropertyMetadata(string.Empty));
public static readonly DependencyProperty IsStripeProperty =
DependencyProperty.RegisterAttached("IsStripe", typeof(bool), typeof(ElementHelper),
new PropertyMetadata(false));
public static readonly DependencyProperty IsRoundProperty =
DependencyProperty.RegisterAttached("IsRound", typeof(bool), typeof(ElementHelper),
new PropertyMetadata(false));
public static readonly DependencyProperty IsClearProperty =
DependencyProperty.RegisterAttached("IsClear", typeof(bool), typeof(ElementHelper),
new PropertyMetadata(false, OnIsClearChanged));
public static CornerRadius GetCornerRadius(DependencyObject obj)
{
return (CornerRadius)obj.GetValue(CornerRadiusProperty);
}
public static void SetCornerRadius(DependencyObject obj, CornerRadius value)
{
obj.SetValue(CornerRadiusProperty, value);
}
public static string GetWatermark(DependencyObject obj)
{
return (string)obj.GetValue(WatermarkProperty);
}
public static void SetWatermark(DependencyObject obj, string value)
{
obj.SetValue(WatermarkProperty, value);
}
public static bool GetIsStripe(DependencyObject obj)
{
return (bool)obj.GetValue(IsStripeProperty);
}
public static void SetIsStripe(DependencyObject obj, bool value)
{
obj.SetValue(IsStripeProperty, value);
}
public static bool GetIsRound(DependencyObject obj)
{
return (bool)obj.GetValue(IsRoundProperty);
}
public static void SetIsRound(DependencyObject obj, bool value)
{
obj.SetValue(IsRoundProperty, value);
}
public static void SetIsClear(UIElement element, bool value)
{
element.SetValue(IsClearProperty, value);
}
public static bool GetIsClear(UIElement element)
{
return (bool)element.GetValue(IsClearProperty);
}
private static void OnIsClearChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var button = d as Button;
if (button != null)
{
if ((bool)e.NewValue)
button.Click += ButtonClear_Click;
else
button.Click -= ButtonClear_Click;
}
}
private static void ButtonClear_Click(object sender, RoutedEventArgs e)
{
if (sender is Button button)
{
if (button.TemplatedParent is TextBox textBox)
textBox.Clear();
else if (button.TemplatedParent is PasswordBox passwordBox)
passwordBox.Clear();
else if (button.TemplatedParent is TabItem tabItem)
{
var tabControl = tabItem.Parent as TabControl;
if (tabControl != null)
tabControl.Items.Remove(tabItem);
}
}
}
}
}

View File

@ -0,0 +1,155 @@
using System;
using System.Windows.Media;
using System.Windows;
namespace SWS.CustomControl
{
internal class GeometryHelper
{
public static void GenerateGeometry(StreamGeometryContext ctx, Rect rect, Radii radii)
{
var point = new Point(radii.LeftTop, 0.0);
var point2 = new Point(rect.Width - radii.RightTop, 0.0);
var point3 = new Point(rect.Width, radii.TopRight);
var point4 = new Point(rect.Width, rect.Height - radii.BottomRight);
var point5 = new Point(rect.Width - radii.RightBottom, rect.Height);
var point6 = new Point(radii.LeftBottom, rect.Height);
var point7 = new Point(0.0, rect.Height - radii.BottomLeft);
var point8 = new Point(0.0, radii.TopLeft);
if (point.X > point2.X)
{
var x = radii.LeftTop / (radii.LeftTop + radii.RightTop) * rect.Width;
point.X = x;
point2.X = x;
}
if (point3.Y > point4.Y)
{
var y = radii.TopRight / (radii.TopRight + radii.BottomRight) * rect.Height;
point3.Y = y;
point4.Y = y;
}
if (point5.X < point6.X)
{
var x2 = radii.LeftBottom / (radii.LeftBottom + radii.RightBottom) * rect.Width;
point5.X = x2;
point6.X = x2;
}
if (point7.Y < point8.Y)
{
var y2 = radii.TopLeft / (radii.TopLeft + radii.BottomLeft) * rect.Height;
point7.Y = y2;
point8.Y = y2;
}
var vector = new Vector(rect.TopLeft.X, rect.TopLeft.Y);
point += vector;
point2 += vector;
point3 += vector;
point4 += vector;
point5 += vector;
point6 += vector;
point7 += vector;
point8 += vector;
ctx.BeginFigure(point, true, true);
ctx.LineTo(point2, true, false);
var width = rect.TopRight.X - point2.X;
var height = point3.Y - rect.TopRight.Y;
if (!DoubleUtil.IsZero(width) || !DoubleUtil.IsZero(height))
{
ctx.ArcTo(point3, new Size(width, height), 0.0, false, SweepDirection.Clockwise, true, false);
}
ctx.LineTo(point4, true, false);
width = rect.BottomRight.X - point5.X;
height = rect.BottomRight.Y - point4.Y;
if (!DoubleUtil.IsZero(width) || !DoubleUtil.IsZero(height))
{
ctx.ArcTo(point5, new Size(width, height), 0.0, false, SweepDirection.Clockwise, true, false);
}
ctx.LineTo(point6, true, false);
width = point6.X - rect.BottomLeft.X;
height = rect.BottomLeft.Y - point7.Y;
if (!DoubleUtil.IsZero(width) || !DoubleUtil.IsZero(height))
{
ctx.ArcTo(point7, new Size(width, height), 0.0, false, SweepDirection.Clockwise, true, false);
}
ctx.LineTo(point8, true, false);
width = point.X - rect.TopLeft.X;
height = point8.Y - rect.TopLeft.Y;
if (!DoubleUtil.IsZero(width) || !DoubleUtil.IsZero(height))
{
ctx.ArcTo(point, new Size(width, height), 0.0, false, SweepDirection.Clockwise, true, false);
}
}
public struct Radii
{
internal Radii(CornerRadius radii, Thickness borders, bool outer)
{
var left = 0.5 * borders.Left;
var top = 0.5 * borders.Top;
var right = 0.5 * borders.Right;
var bottom = 0.5 * borders.Bottom;
if (!outer)
{
LeftTop = Math.Max(0.0, radii.TopLeft - left);
TopLeft = Math.Max(0.0, radii.TopLeft - top);
TopRight = Math.Max(0.0, radii.TopRight - top);
RightTop = Math.Max(0.0, radii.TopRight - right);
RightBottom = Math.Max(0.0, radii.BottomRight - right);
BottomRight = Math.Max(0.0, radii.BottomRight - bottom);
BottomLeft = Math.Max(0.0, radii.BottomLeft - bottom);
LeftBottom = Math.Max(0.0, radii.BottomLeft - left);
return;
}
if (DoubleUtil.IsZero(radii.TopLeft))
{
LeftTop = (TopLeft = 0.0);
}
else
{
LeftTop = radii.TopLeft + left;
TopLeft = radii.TopLeft + top;
}
if (DoubleUtil.IsZero(radii.TopRight))
{
TopRight = (RightTop = 0.0);
}
else
{
TopRight = radii.TopRight + top;
RightTop = radii.TopRight + right;
}
if (DoubleUtil.IsZero(radii.BottomRight))
{
RightBottom = (BottomRight = 0.0);
}
else
{
RightBottom = radii.BottomRight + right;
BottomRight = radii.BottomRight + bottom;
}
if (DoubleUtil.IsZero(radii.BottomLeft))
{
BottomLeft = (LeftBottom = 0.0);
return;
}
BottomLeft = radii.BottomLeft + bottom;
LeftBottom = radii.BottomLeft + left;
}
internal double LeftTop;
internal double TopLeft;
internal double TopRight;
internal double RightTop;
internal double RightBottom;
internal double BottomRight;
internal double BottomLeft;
internal double LeftBottom;
}
}
}

View File

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
namespace SWS.CustomControl
{
public class MultiSelectComboBoxItem : ListBoxItem
{
}
}

View File

@ -0,0 +1,18 @@
using System.Windows;
using System.Windows.Controls;
namespace SWS.CustomControl
{
public class MultiSelectListBox:ListBox
{
protected override bool IsItemItsOwnContainerOverride(object item)
{
return item is MultiSelectComboBoxItem;
}
protected override DependencyObject GetContainerForItemOverride()
{
return new MultiSelectComboBoxItem();
}
}
}

View File

@ -0,0 +1,630 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls.Primitives;
using System.Windows.Controls;
using System.Windows.Interop;
using System.Windows;
namespace SWS.CustomControl
{
[TemplatePart(Name = "PART_TextBox", Type = typeof(TextBox))]
[TemplatePart(Name = "PART_Popup", Type = typeof(Popup))]
[TemplatePart(Name = "PART_Selector", Type = typeof(ListBox))]
[TemplatePart(Name = "PART_SelectAll", Type = typeof(CheckBox))]
[TemplatePart(Name = "PART_SearchSelector", Type = typeof(ListBox))]
public class MultiSelectSearchComboBox : Control
{
private const string TextBoxTemplateName = "PART_TextBox";
private const string PopupTemplateName = "PART_Popup";
private const string ListBoxTemplateName = "PART_Selector";
private const string CheckBoxTemplateName = "PART_SelectAll";
private const string ListBoxTemplateNameSearch = "PART_SearchSelector";
public static readonly RoutedEvent ClosedEvent =
EventManager.RegisterRoutedEvent("Closed",
RoutingStrategy.Bubble,
typeof(RoutedEventHandler),
typeof(MultiSelectSearchComboBox));
public static readonly DependencyProperty DisplayMemberPathProperty =
DependencyProperty.Register("DisplayMemberPath",
typeof(string),
typeof(MultiSelectSearchComboBox),
new PropertyMetadata(string.Empty));
public static readonly DependencyProperty SelectedValuePathProperty =
DependencyProperty.Register("SelectedValuePath",
typeof(string),
typeof(MultiSelectSearchComboBox),
new PropertyMetadata(string.Empty));
public static readonly DependencyProperty TextProperty =
DependencyProperty.Register("Text",
typeof(string),
typeof(MultiSelectSearchComboBox),
new PropertyMetadata(string.Empty));
public static readonly DependencyProperty ItemsSourceProperty =
DependencyProperty.Register("ItemsSource", typeof(IEnumerable), typeof(MultiSelectSearchComboBox),
new PropertyMetadata());
public static readonly DependencyProperty ItemsSourceSearchProperty =
DependencyProperty.Register("ItemsSourceSearch", typeof(IEnumerable), typeof(MultiSelectSearchComboBox),
new PropertyMetadata());
public static readonly DependencyProperty SelectAllContentProperty =
DependencyProperty.Register("SelectAllContent", typeof(object), typeof(MultiSelectSearchComboBox),
new PropertyMetadata("全选"));
public static readonly DependencyProperty IsSelectAllActiveProperty =
DependencyProperty.Register("IsSelectAllActive", typeof(bool), typeof(MultiSelectSearchComboBox),
new PropertyMetadata(false));
public static readonly DependencyProperty DelimiterProperty =
DependencyProperty.Register("Delimiter", typeof(string), typeof(MultiSelectSearchComboBox),
new PropertyMetadata(";"));
public static readonly DependencyProperty IsDropDownOpenProperty =
DependencyProperty.Register("IsDropDownOpen", typeof(bool), typeof(MultiSelectSearchComboBox),
new PropertyMetadata(false, OnIsDropDownOpenChanged));
public static readonly DependencyProperty MaxDropDownHeightProperty =
DependencyProperty.Register("MaxDropDownHeight", typeof(double), typeof(MultiSelectSearchComboBox),
new UIPropertyMetadata(SystemParameters.PrimaryScreenHeight / 3.0, OnMaxDropDownHeightChanged));
public static readonly DependencyProperty SelectedItemsProperty =
DependencyProperty.Register("SelectedItems", typeof(IList), typeof(MultiSelectSearchComboBox),
new FrameworkPropertyMetadata(new ArrayList(),
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault | FrameworkPropertyMetadataOptions.Journal,
OnSelectedItemsChanged));
public static readonly DependencyProperty SearchWatermarkProperty =
DependencyProperty.Register("SearchWatermark",
typeof(string),
typeof(MultiSelectSearchComboBox),
new PropertyMetadata(string.Empty));
private CheckBox _checkBox;
private ListBox _listBox;
private ListBox _listBoxSearch;
private Popup _popup;
private TextBox _textBox;
private List<object> selectedItems;
private List<object> selectedList;
private List<object> selectedSearchList;
private bool _isTemplateApplied = false;
private IList _pendingSelectedItems;
private string theLastText;
static MultiSelectSearchComboBox()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MultiSelectSearchComboBox),
new FrameworkPropertyMetadata(typeof(MultiSelectSearchComboBox)));
}
public string Delimiter
{
get => (string)GetValue(DelimiterProperty);
set => SetValue(DelimiterProperty, value);
}
public string SelectedValuePath
{
get => (string)GetValue(SelectedValuePathProperty);
set => SetValue(SelectedValuePathProperty, value);
}
public string DisplayMemberPath
{
get => (string)GetValue(DisplayMemberPathProperty);
set => SetValue(DisplayMemberPathProperty, value);
}
public string Text
{
get => (string)GetValue(TextProperty);
set => SetValue(TextProperty, value);
}
public IEnumerable ItemsSource
{
get => (IEnumerable)GetValue(ItemsSourceProperty);
set => SetValue(ItemsSourceProperty, value);
}
public IEnumerable ItemsSourceSearch
{
get => (IEnumerable)GetValue(ItemsSourceSearchProperty);
set => SetValue(ItemsSourceSearchProperty, value);
}
public object SelectAllContent
{
get => GetValue(SelectAllContentProperty);
set => SetValue(SelectAllContentProperty, value);
}
public bool IsSelectAllActive
{
get => (bool)GetValue(IsSelectAllActiveProperty);
set => SetValue(IsSelectAllActiveProperty, value);
}
public bool IsDropDownOpen
{
get => (bool)GetValue(IsDropDownOpenProperty);
set => SetValue(IsDropDownOpenProperty, value);
}
public double MaxDropDownHeight
{
get => (double)GetValue(MaxDropDownHeightProperty);
set => SetValue(MaxDropDownHeightProperty, value);
}
public IList SelectedItems
{
get => (IList)GetValue(SelectedItemsProperty);
set => SetValue(SelectedItemsProperty, value);
}
public string SearchWatermark
{
get => (string)GetValue(SearchWatermarkProperty);
set => SetValue(SearchWatermarkProperty, value);
}
[DllImport(Win32.User32)]
private static extern IntPtr SetFocus(IntPtr hWnd);
public event RoutedEventHandler Closed
{
add => AddHandler(ClosedEvent, value);
remove => RemoveHandler(ClosedEvent, value);
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
selectedList = new List<object>();
selectedSearchList = new List<object>();
selectedItems = new List<object>();
_textBox = GetTemplateChild(TextBoxTemplateName) as TextBox;
_popup = GetTemplateChild(PopupTemplateName) as Popup;
if (_popup != null)
_popup.GotFocus += OnPopup_GotFocus;
_listBox = GetTemplateChild(ListBoxTemplateName) as ListBox;
_checkBox = GetTemplateChild(CheckBoxTemplateName) as CheckBox;
_listBoxSearch = GetTemplateChild(ListBoxTemplateNameSearch) as ListBox;
if (_textBox != null)
{
_textBox.TextChanged -= OnTextbox_TextChanged;
_textBox.TextChanged += OnTextbox_TextChanged;
}
if (_checkBox != null)
{
_checkBox.Checked -= OnCheckBox_Checked;
_checkBox.Unchecked -= OnCheckBox_Unchecked;
_checkBox.Checked += OnCheckBox_Checked;
_checkBox.Unchecked += OnCheckBox_Unchecked;
}
if (_listBox != null)
{
_listBox.IsVisibleChanged -= OnListBox_IsVisibleChanged;
_listBox.IsVisibleChanged += OnListBox_IsVisibleChanged;
_listBox.SelectionChanged -= OnListBox_SelectionChanged;
_listBox.SelectionChanged += OnListBox_SelectionChanged;
}
if (_listBoxSearch != null)
{
_listBoxSearch.IsVisibleChanged -= OnListBoxSearch_IsVisibleChanged;
_listBoxSearch.IsVisibleChanged += OnListBoxSearch_IsVisibleChanged;
_listBoxSearch.SelectionChanged -= OnListBoxSearch_SelectionChanged;
_listBoxSearch.SelectionChanged += OnListBoxSearch_SelectionChanged;
}
// 标记模板已应用
_isTemplateApplied = true;
// 处理之前暂存的 SelectedItems
if (_pendingSelectedItems != null)
{
HandleSelectedItemsChanged(_pendingSelectedItems);
_pendingSelectedItems = null;
}
}
private void OnListBoxSearch_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if ((bool)e.NewValue)
UpdateIsChecked(_listBoxSearch);
}
private void OnListBox_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if ((bool)e.NewValue)
{
foreach (var item in selectedSearchList)
if (!_listBox.SelectedItems.Contains(item))
_listBox.SelectedItems.Add(item);
UpdateIsChecked(_listBox);
}
}
private void UpdateIsChecked(ListBox listBox)
{
_checkBox.Checked -= OnCheckBox_Checked;
if (listBox.Items.Count > 0 && listBox.Items.Count == listBox.SelectedItems.Count)
{
if (_checkBox.IsChecked != true)
_checkBox.IsChecked = true;
}
else
{
if (listBox.SelectedItems.Count == 0)
_checkBox.IsChecked = false;
else
_checkBox.IsChecked = null;
}
_checkBox.Checked += OnCheckBox_Checked;
}
private void OnPopup_GotFocus(object sender, RoutedEventArgs e)
{
var source = (HwndSource)PresentationSource.FromVisual(_popup.Child);
if (source != null)
{
SetFocus(source.Handle);
_textBox.Focus();
}
}
private void OnCheckBox_Unchecked(object sender, RoutedEventArgs e)
{
if (_listBoxSearch.Visibility == Visibility.Visible)
_listBoxSearch.UnselectAll();
else
_listBox.UnselectAll();
}
private void OnCheckBox_Checked(object sender, RoutedEventArgs e)
{
if (_listBoxSearch.Visibility == Visibility.Visible)
_listBoxSearch.SelectAll();
else
_listBox.SelectAll();
}
private void Combination()
{
var seletedName = new List<string>();
foreach (var item in _listBox.SelectedItems)
{
var name = GetDisplayText(item);
if (!string.IsNullOrWhiteSpace(name))
seletedName.Add(name);
else
seletedName.Add(item.ToString());
}
foreach (var item in _listBoxSearch.SelectedItems)
{
if (_listBox.SelectedItems.Contains(item))
continue;
var name = GetDisplayText(item);
if (!string.IsNullOrWhiteSpace(name))
seletedName.Add(name);
else
seletedName.Add(item.ToString());
}
Text = string.Join(Delimiter, seletedName.ToArray());
}
private void OnListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.RemovedItems.Count > 0)
{
foreach (var item in e.RemovedItems)
{
if (_checkBox.IsChecked == true)
{
_checkBox.Unchecked -= OnCheckBox_Unchecked;
if (_listBox.Items.Count == 1)
_checkBox.IsChecked = false;
else
_checkBox.IsChecked = null;
_checkBox.Unchecked += OnCheckBox_Unchecked;
}
if (_listBoxSearch.SelectedItems.Contains(item))
_listBoxSearch.SelectedItems.Remove(item);
if (selectedSearchList.Contains(item))
selectedSearchList.Remove(item);
}
SelectionChecked(_listBox);
}
if (e.AddedItems.Count > 0)
SelectionChecked(_listBox);
Combination();
var selectedItems = _listBox.SelectedItems;
if (SelectedItems == null)
SelectedItems = selectedItems;
else
{
foreach (var item in selectedItems)
{
if (!SelectedItems.Contains(item))
SelectedItems.Add(item);
}
}
}
private void OnListBoxSearch_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (!_listBoxSearch.IsVisible)
return;
if (e.RemovedItems.Count > 0)
{
foreach (var item in e.RemovedItems)
{
if (selectedSearchList.Contains(item))
selectedSearchList.Remove(item);
if (_listBoxSearch.Items.Contains(item))
{
if (_listBox.SelectedItems.Contains(item))
_listBox.SelectedItems.Remove(item);
}
if (selectedList.Contains(item))
selectedList.Remove(item);
}
Combination();
SelectionChecked(_listBoxSearch);
}
if (e.AddedItems.Count > 0)
{
foreach (var item in e.AddedItems)
if (!_listBox.SelectedItems.Contains(item))
_listBox.SelectedItems.Add(item);
Combination();
SelectionChecked(_listBoxSearch);
}
}
private void SelectionChecked(ListBox listbox)
{
if (listbox.SelectedItems.Count > 0
&&
listbox.Items.Count == listbox.SelectedItems.Count)
{
_checkBox.Checked -= OnCheckBox_Checked;
_checkBox.IsChecked = true;
_checkBox.Checked += OnCheckBox_Checked;
}
else
{
_checkBox.Checked -= OnCheckBox_Checked;
if (listbox.SelectedItems.Count > 0
&&
listbox.Items.Count == listbox.SelectedItems.Count)
{
if (_checkBox.IsChecked != true)
_checkBox.IsChecked = true;
}
else
{
if (listbox.SelectedItems.Count == 0)
_checkBox.IsChecked = false;
else
_checkBox.IsChecked = null;
}
_checkBox.Checked += OnCheckBox_Checked;
}
}
private string GetDisplayText(object dataItem, string path = null)
{
if (dataItem == null) return string.Empty;
return GetPropertyValue(dataItem);
}
private void OnTextbox_TextChanged(object sender, TextChangedEventArgs e)
{
if (string.IsNullOrWhiteSpace(theLastText)) theLastText = _textBox.Text;
SearchText(_textBox.Text);
}
private void SearchText(string _text)
{
var text = _text;
if (string.IsNullOrWhiteSpace(text))
{
if (_listBoxSearch.Visibility != Visibility.Collapsed)
_listBoxSearch.Visibility = Visibility.Collapsed;
if (_listBox.Visibility != Visibility.Visible)
_listBox.Visibility = Visibility.Visible;
}
else
{
if (_listBoxSearch.Visibility != Visibility.Visible)
_listBoxSearch.Visibility = Visibility.Visible;
if (_listBox.Visibility != Visibility.Collapsed)
_listBox.Visibility = Visibility.Collapsed;
var listSearch = new List<object>();
foreach (var item in _listBox.Items)
{
var str = GetPropertyValue(item);
if (string.IsNullOrWhiteSpace(str))
str = item.ToString();
if (!string.IsNullOrWhiteSpace(str))
if (str.ToUpperInvariant().Contains(text.ToUpperInvariant()))
listSearch.Add(item);
}
foreach (var item in selectedList)
if (!listSearch.Contains(item))
listSearch.Add(item);
var lastItem = ItemsSourceSearch;
ItemsSourceSearch = listSearch;
SelectionChecked(_listBoxSearch);
selectedItems.Clear();
foreach (var item in _listBoxSearch.Items)
if (_listBox.SelectedItems.Contains(item))
if (!_listBoxSearch.SelectedItems.Contains(item))
_listBoxSearch.SelectedItems.Add(item);
}
}
private string GetPropertyValue(object item)
{
var result = string.Empty;
var nameParts = DisplayMemberPath.Split('.');
if (nameParts.Length == 1)
{
var property = item.GetType().GetProperty(DisplayMemberPath);
if (property != null)
return (property.GetValue(item, null) ?? string.Empty).ToString();
}
return result.ToUpperInvariant();
}
private static void OnIsDropDownOpenChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
var multiSelectionSearchComboBox = o as MultiSelectSearchComboBox;
if (multiSelectionSearchComboBox != null)
multiSelectionSearchComboBox.OnIsOpenChanged((bool)e.OldValue, (bool)e.NewValue);
}
protected virtual void OnIsOpenChanged(bool oldValue, bool newValue)
{
if (!newValue)
RaiseRoutedEvent(ClosedEvent);
}
private void RaiseRoutedEvent(RoutedEvent routedEvent)
{
var args = new RoutedEventArgs(routedEvent, this);
RaiseEvent(args);
}
private static void OnMaxDropDownHeightChanged(DependencyObject o, DependencyPropertyChangedEventArgs e)
{
var comboBox = o as MultiSelectSearchComboBox;
if (comboBox != null)
comboBox.OnMaxDropDownHeightChanged((double)e.OldValue, (double)e.NewValue);
}
protected virtual void OnMaxDropDownHeightChanged(double oldValue, double newValue)
{
}
private static void OnSelectedItemsChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var mltiSelectionSearchComboBox = d as MultiSelectSearchComboBox;
if (e.NewValue != null)
{
var collection = e.NewValue as IList;
if (collection.Count <= 0) return;
//mltiSelectionSearchComboBox._listBox.SelectionChanged -=
// mltiSelectionSearchComboBox.OnListBox_SelectionChanged;
// foreach (var item in collection)
// {
// var name = mltiSelectionSearchComboBox.GetPropertyValue(item);
// object model = null;
// if (!string.IsNullOrWhiteSpace(name))
// model = mltiSelectionSearchComboBox._listBox.ItemsSource.OfType<object>().FirstOrDefault(h =>
// mltiSelectionSearchComboBox.GetPropertyValue(h) == name);
// else
// model = mltiSelectionSearchComboBox._listBox.ItemsSource.OfType<object>()
// .FirstOrDefault(h => h == item);
// if (model != null && !mltiSelectionSearchComboBox._listBox.SelectedItems.Contains(item))
// mltiSelectionSearchComboBox._listBox.SelectedItems.Add(model);
// }
// mltiSelectionSearchComboBox._listBox.SelectionChanged +=
// mltiSelectionSearchComboBox.OnListBox_SelectionChanged;
// mltiSelectionSearchComboBox.Combination();
// 如果模板未应用,暂存 SelectedItems
if (!mltiSelectionSearchComboBox._isTemplateApplied)
{
mltiSelectionSearchComboBox._pendingSelectedItems = e.NewValue as IList;
return;
}
// 模板已应用,正常处理
mltiSelectionSearchComboBox.HandleSelectedItemsChanged(e.NewValue as IList);
}
}
private void HandleSelectedItemsChanged(IList newSelectedItems)
{
if (newSelectedItems == null || _listBox == null)
return;
_listBox.SelectionChanged -= OnListBox_SelectionChanged;
// 清空并重新添加选中项
_listBox.SelectedItems.Clear();
foreach (var item in newSelectedItems)
{
var model = FindItemInItemsSource(item);
if (model != null && !_listBox.SelectedItems.Contains(model))
_listBox.SelectedItems.Add(model);
}
_listBox.SelectionChanged += OnListBox_SelectionChanged;
Combination(); // 更新显示文本
}
private object FindItemInItemsSource(object targetItem)
{
if (targetItem == null) return null;
// 根据 DisplayMemberPath 或直接比较查找匹配项
var displayPath = DisplayMemberPath;
if (string.IsNullOrEmpty(displayPath))
return targetItem;
var items = _listBox.ItemsSource?.OfType<object>().ToList();
if (items == null) return null;
var property = targetItem.GetType().GetProperty(displayPath);
if (property == null) return null;
var targetValue = property.GetValue(targetItem)?.ToString();
return items.FirstOrDefault(i =>
{
var iValue = i.GetType().GetProperty(displayPath)?.GetValue(i)?.ToString();
return iValue == targetValue;
});
}
}
}

View File

@ -0,0 +1,52 @@
using System;
using System.Windows;
using System.Windows.Controls;
namespace SWS.CustomControl
{
/// <summary>
/// 当不需要使用Grid的分行分列则可使用 SmallPanel
/// </summary>
public class SmallPanel : Panel
{
/// <summary>
/// Content measurement.
/// </summary>
/// <param name="constraint">Constraint</param>
/// <returns>Desired size</returns>
protected override Size MeasureOverride(Size constraint)
{
Size gridDesiredSize = new Size();
UIElementCollection children = InternalChildren;
for (int i = 0, count = children.Count; i < count; ++i)
{
UIElement child = children[i];
if (child != null)
{
child.Measure(constraint);
gridDesiredSize.Width = Math.Max(gridDesiredSize.Width, child.DesiredSize.Width);
gridDesiredSize.Height = Math.Max(gridDesiredSize.Height, child.DesiredSize.Height);
}
}
return (gridDesiredSize);
}
/// <summary>
/// Content arrangement.
/// </summary>
/// <param name="arrangeSize">Arrange size</param>
protected override Size ArrangeOverride(Size arrangeSize)
{
UIElementCollection children = InternalChildren;
for (int i = 0, count = children.Count; i < count; ++i)
{
UIElement child = children[i];
if (child != null)
{
child.Arrange(new Rect(arrangeSize));
}
}
return (arrangeSize);
}
}
}

View File

@ -0,0 +1,50 @@
using System.Windows.Media;
using System.Windows;
using System.Windows.Controls;
namespace SWS.CustomControl
{
public class WDBorder : Border
{
public static readonly DependencyPropertyKey ContentClipPropertyKey =
DependencyProperty.RegisterReadOnly("ContentClip", typeof(Geometry), typeof(WDBorder),
new PropertyMetadata(null));
public static readonly DependencyProperty ContentClipProperty = ContentClipPropertyKey.DependencyProperty;
public Geometry ContentClip
{
get => (Geometry)GetValue(ContentClipProperty);
set => SetValue(ContentClipProperty, value);
}
private Geometry CalculateContentClip()
{
var borderThickness = BorderThickness;
var cornerRadius = CornerRadius;
var renderSize = RenderSize;
var width = renderSize.Width - borderThickness.Left - borderThickness.Right;
var height = renderSize.Height - borderThickness.Top - borderThickness.Bottom;
if (width > 0.0 && height > 0.0)
{
var rect = new Rect(0.0, 0.0, width, height);
var radii = new GeometryHelper.Radii(cornerRadius, borderThickness, false);
var streamGeometry = new StreamGeometry();
using (var streamGeometryContext = streamGeometry.Open())
{
GeometryHelper.GenerateGeometry(streamGeometryContext, rect, radii);
streamGeometry.Freeze();
return streamGeometry;
}
}
return null;
}
protected override void OnRender(DrawingContext dc)
{
SetValue(ContentClipPropertyKey, CalculateContentClip());
base.OnRender(dc);
}
}
}

View File

@ -0,0 +1,170 @@
using System;
using System.Runtime.InteropServices;
using System.Text;
namespace SWS.CustomControl
{
public static class Win32
{
public const string
User32 = "user32.dll",
Gdi32 = "gdi32.dll",
GdiPlus = "gdiplus.dll",
Kernel32 = "kernel32.dll",
Shell32 = "shell32.dll",
MsImg = "msimg32.dll",
NTdll = "ntdll.dll",
DwmApi = "dwmapi.dll",
Winmm = "winmm.dll",
Shcore = "Shcore.dll";
//查找窗口的委托 查找逻辑
public delegate bool EnumWindowsProc(IntPtr hwnd, IntPtr lParam);
[DllImport(User32)]
public static extern IntPtr FindWindow(string className, string winName);
[DllImport(User32)]
public static extern IntPtr SendMessageTimeout(IntPtr hwnd, uint msg, IntPtr wParam, IntPtr lParam,
uint fuFlage, uint timeout, IntPtr result);
[DllImport(User32)]
public static extern bool EnumWindows(EnumWindowsProc proc, IntPtr lParam);
[DllImport(User32)]
public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string className,
string winName);
[DllImport(User32)]
public static extern bool ShowWindow(IntPtr hwnd, int nCmdShow);
[DllImport(User32)]
public static extern IntPtr SetParent(IntPtr hwnd, IntPtr parentHwnd);
[DllImport(User32)]
public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
[DllImport(User32)]
public static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport(User32)]
public static extern bool PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
[DllImport(User32)]
public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);
[DllImport(Winmm)]
public static extern long mciSendString(string strCommand, StringBuilder strReturn,
int iReturnLength, IntPtr hwndCallback);
#region WINAPI DLL Imports
[DllImport(Gdi32, ExactSpelling = true, PreserveSig = true, SetLastError = true)]
public static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj);
[DllImport(Gdi32)]
public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight);
[DllImport(Gdi32, SetLastError = true)]
public static extern IntPtr CreateCompatibleDC(IntPtr hdc);
[DllImport(Gdi32)]
public static extern bool DeleteObject(IntPtr hObject);
[DllImport(Gdi32)]
public static extern IntPtr CreateBitmap(int nWidth, int nHeight, uint cPlanes, uint cBitsPerPel,
IntPtr lpvBits);
[DllImport(User32)]
public static extern IntPtr GetDC(IntPtr hWnd);
[DllImport(User32)]
public static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
[DllImport(Gdi32, EntryPoint = "DeleteDC")]
public static extern IntPtr DeleteDC(IntPtr hDc);
public const int SM_CXSCREEN = 0;
public const int SM_CYSCREEN = 1;
[DllImport(User32, EntryPoint = "GetDesktopWindow")]
public static extern IntPtr GetDesktopWindow();
[DllImport(User32, EntryPoint = "GetSystemMetrics")]
public static extern int GetSystemMetrics(int abc);
[DllImport(User32, EntryPoint = "GetWindowDC")]
public static extern IntPtr GetWindowDC(int ptr);
public struct DeskTopSize
{
public int cx;
public int cy;
}
public enum TernaryRasterOperations : uint
{
/// <summary>dest = source</summary>
SRCCOPY = 0x00CC0020,
/// <summary>dest = source OR dest</summary>
SRCPAINT = 0x00EE0086,
/// <summary>dest = source AND dest</summary>
SRCAND = 0x008800C6,
/// <summary>dest = source XOR dest</summary>
SRCINVERT = 0x00660046,
/// <summary>dest = source AND (NOT dest)</summary>
SRCERASE = 0x00440328,
/// <summary>dest = (NOT source)</summary>
NOTSRCCOPY = 0x00330008,
/// <summary>dest = (NOT src) AND (NOT dest)</summary>
NOTSRCERASE = 0x001100A6,
/// <summary>dest = (source AND pattern)</summary>
MERGECOPY = 0x00C000CA,
/// <summary>dest = (NOT source) OR dest</summary>
MERGEPAINT = 0x00BB0226,
/// <summary>dest = pattern</summary>
PATCOPY = 0x00F00021,
/// <summary>dest = DPSnoo</summary>
PATPAINT = 0x00FB0A09,
/// <summary>dest = pattern XOR dest</summary>
PATINVERT = 0x005A0049,
/// <summary>dest = (NOT dest)</summary>
DSTINVERT = 0x00550009,
/// <summary>dest = BLACK</summary>
BLACKNESS = 0x00000042,
/// <summary>dest = WHITE</summary>
WHITENESS = 0x00FF0062
}
[DllImport(Gdi32)]
public static extern bool BitBlt(IntPtr hdc, int nXDest, int nYDest, int nWidth, int nHeight, IntPtr hdcSrc,
int nXSrc, int nYSrc, TernaryRasterOperations dwRop);
#endregion
/// <summary>
/// 设置鼠标的坐标
/// </summary>
/// <param name="x">横坐标</param>
/// <param name="y">纵坐标</param>
[DllImport(User32)]
public extern static void SetCursorPos(int x, int y);
}
}

View File

@ -0,0 +1,33 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("SWS.CustomControl")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SWS.CustomControl")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("2dcf996e-063b-4b95-8530-28f6df0da58a")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{2DCF996E-063B-4B95-8530-28F6DF0DA58A}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SWS.CustomControl</RootNamespace>
<AssemblyName>SWS.CustomControl</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xaml" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="WindowsBase" />
</ItemGroup>
<ItemGroup>
<Compile Include="customWindowTitleBar.xaml.cs">
<DependentUpon>customWindowTitleBar.xaml</DependentUpon>
</Compile>
<Compile Include="IconButton\IconButton.cs" />
<Compile Include="MultiSelectSearchComboBox\CollectionToStringConverter.cs" />
<Compile Include="MultiSelectSearchComboBox\DoubleUtil.cs" />
<Compile Include="MultiSelectSearchComboBox\ElementHelper.cs" />
<Compile Include="MultiSelectSearchComboBox\GeometryHelper.cs" />
<Compile Include="MultiSelectSearchComboBox\MultiSelectComboBoxItem.cs" />
<Compile Include="MultiSelectSearchComboBox\MultiSelectListBox.cs" />
<Compile Include="MultiSelectSearchComboBox\MultiSelectSearchComboBox.cs" />
<Compile Include="MultiSelectSearchComboBox\SmallPanel.cs" />
<Compile Include="MultiSelectSearchComboBox\WDBorder.cs" />
<Compile Include="MultiSelectSearchComboBox\Win32.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Selector\ConditionalStyleSelector.cs" />
<Compile Include="Selector\SignalNoticeStyleSelector.cs" />
</ItemGroup>
<ItemGroup>
<Page Include="customWindowTitleBar.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\SWS.Model\SWS.Model.csproj">
<Project>{1995385b-d1b0-4c55-835e-d3e769972a6a}</Project>
<Name>SWS.Model</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -0,0 +1,83 @@
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
namespace SWS.CustomControl
{
public class ConditionalStyleSelector:StyleSelector
{
public override System.Windows.Style SelectStyle(object item, System.Windows.DependencyObject container)
{
//获取到转换器返回的值
object conditionValue = this.ConditionConverter.Convert(item, null, null, null);
foreach (ConditionalStyleRule rule in this.Rules)
{
//值相同则返回当前样式
if (Equals(rule.Value, conditionValue))
{
return rule.Style;
}
}
return base.SelectStyle(item, container);
}
List<ConditionalStyleRule> _Rules;
public List<ConditionalStyleRule> Rules
{
get
{
if (this._Rules == null)
{
this._Rules = new List<ConditionalStyleRule>();
}
return this._Rules;
}
}
IValueConverter _ConditionConverter;
public IValueConverter ConditionConverter
{
get
{
return this._ConditionConverter;
}
set
{
this._ConditionConverter = value;
}
}
}
public class ConditionalStyleRule
{
object _Value;
public object Value
{
get
{
return this._Value;
}
set
{
this._Value = value;
}
}
Style _Style;
public Style Style
{
get
{
return this._Style;
}
set
{
this._Style = value;
}
}
}
}

View File

@ -0,0 +1,41 @@
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using SWS.Model;
namespace SWS.CustomControl
{
public class SignalNoticeStyleSelector:StyleSelector
{
public override Style SelectStyle(object item, DependencyObject container)
{
SignalNotice conditionValue = item as SignalNotice;
string value = conditionValue.CheckFLG.ToString();
foreach (ConditionalStyleRule rule in this.Rules)
{
//值相同则返回当前样式
if (Equals(rule.Value, value))
{
return rule.Style;
}
}
return base.SelectStyle(item, container);
}
List<ConditionalStyleRule> _Rules;
public List<ConditionalStyleRule> Rules
{
get
{
if (this._Rules == null)
{
this._Rules = new List<ConditionalStyleRule>();
}
return this._Rules;
}
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More