LunarPresentation/Converts/MaxWidthConverter.cs
(完整代码) 2KBusing System;
using System.Globalization;
using System.Windows.Data;
using SHomeWorkshop.LunarPresentation.Interfaces;
namespace SHomeWorkshop.LunarPresentation.Converts
{
public class MaxWidthConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values.Length == 6)
{
AutoWrapType selfAutoWrap = (AutoWrapType)values[4];
bool docAutoWrap = (bool)values[3];
double fontSize = (double)values[0];
double wndWidth = (double)values[1];
int indent = (int)values[2];
if ((selfAutoWrap == AutoWrapType.FromDoc && docAutoWrap == true) ||
selfAutoWrap == AutoWrapType.Wrap)
{
double result = wndWidth - (indent + 1) * 2 * fontSize;
//文本块如果缩进是五级的话的,最大宽度为主窗口的实际宽度减去12字宽。
//字符的宽度由正文的字号决定,正文字号即是编辑器的默认基准字号。
//这是考虑到标题有4级,再加1级正文,每级缩进2字宽,共计10字宽。
//又主窗口还有边距,这样12字就差不多了。
if (result < 200)
{
return 200;
}
else
{
double editorMaxTextWidth = (double)values[5];
if (result > editorMaxTextWidth)
{
return editorMaxTextWidth;
}
else
{
return result;
}
}
}
else
{
return Double.PositiveInfinity;//如果不自动折行,则不限制宽度。PositiveInfinity,正无穷。
}
}
else return Double.PositiveInfinity;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
return null;
}
}
}
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。