当前位置: 首页 > news >正文

中国现代公路建设有限公司网站长尾关键词爱站

中国现代公路建设有限公司网站,长尾关键词爱站,微信小程序是什么框架,建筑工程网5177517本文内容 FlowDirectionFlowDocumentSpan 元素非文本元素的 FlowDirection数字替换 与其他任何开发平台不同#xff0c;WPF 具有许多支持双向内容快速开发的功能#xff0c;例如#xff0c;同一文档中混合了从左到右和从右到左的数据。 同时#xff0c;WPF 也为需要双向功…本文内容 FlowDirectionFlowDocumentSpan 元素非文本元素的 FlowDirection数字替换 与其他任何开发平台不同WPF 具有许多支持双向内容快速开发的功能例如同一文档中混合了从左到右和从右到左的数据。 同时WPF 也为需要双向功能的用户如阿拉伯语和希伯来语用户带来了绝佳的体验。 以下各节结合一些示例阐释了如何获得双向内容的最佳显示效果并对许多双向功能进行了说明。 大多数示例使用的是 XAML但你可以轻松地将这些概念应用于 C# 或 Microsoft Visual Basic 代码。 1、FlowDirection FlowDirection 是在 WPF 应用程序中定义内容流方向的基本属性。 此属性可设置为以下两个枚举值之一LeftToRight 或 RightToLeft。 此属性可用于从 FrameworkElement 继承的所有 WPF 元素。 以下示例将设置 TextBox 元素的流方向。 从左向右的流方向 TextBlock BackgroundDarkBlue ForegroundLightBlue FontSize20 FlowDirectionLeftToRightThis is a left-to-right TextBlock /TextBlock从右向左的流方向 TextBlock BackgroundLightBlue ForegroundDarkBlueFontSize20 FlowDirectionRightToLeftThis is a right-to-left TextBlock /TextBlock下图显示了前面代码的呈现方式。 用户界面 (UI) 树内的元素将从其容器继承 FlowDirection。 在下面的示例中TextBlock 位于 Grid 中而后者位于 Window 中。 为 Window 设置 FlowDirection 意味着还将为 Grid 和 TextBlock 设置该属性。 以下示例演示如何设置 FlowDirection。 Windowxmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlx:ClassFlowDirectionApp.Window1TitleBidiFeatures Height200 Width700 FlowDirectionRightToLeftGridGrid.ColumnDefinitionsColumnDefinition/ColumnDefinition//Grid.ColumnDefinitionsTextBlock Grid.Column0 This is a right-to-left TextBlock/TextBlockTextBlock Grid.Column1 FlowDirectionLeftToRightThis is a left-to-right TextBlock/TextBlock/Grid /Window顶级 Window 包含 RightToLeftFlowDirection因此其中包含的所有元素也都继承同一 FlowDirection。 对于要替代指定的 FlowDirection 的元素必须添加显式方向更改如上一示例中的第二个 TextBlock该控件更改为 LeftToRight。 如果未定义 FlowDirection将应用默认的 LeftToRight。 下图显示了上一个示例的输出 2、FlowDocument HTML、Win32 和 Java 等许多开发平台都对双向内容开发提供特殊支持。 标记语言如 HTML为内容编写器提供了在任意所需方向显示文本时必需的标记如 HTML 4.0 标记、采用“rtl”或“ltr”作为值的“dir”等。 此标记类似于 FlowDirection 属性但 FlowDirection 属性使用了一种更高级的方法来布局文本内容并可用于除文本以外的内容。 在 UI 中它是一种可以托管文本、表、图像和其他元素的组合的元素。 以下各节中的示例均使用此元素。 可通过多种方式将文本添加到 FlowDocument。 其中一种简单方法就是使用 Paragraph它是用于对文本等内容进行分组的块级元素。 为了将文本添加到内联级元素这些示例使用了 Span 和 Run。 Span 是用于对其他内联元素进行分组的内联级流内容元素而 Run 是用于包含一系列无格式文本的内联级流内容元素。 一个 Span 可以包含多个 Run 元素。 第一个文档示例包含的文档具有很多个网络共享名例如 \\server1\folder\file.ext。 无论此网络链接是包含在阿拉伯语文档还是英语文档中建议始终以相同的方式显示它。 下图演示了如何使用 Span 元素并显示了阿拉伯语 RightToLeft 文档中的链接 由于文本是 RightToLeft因此所有特殊字符如“\”都按从右到左的顺序分隔文本。 这样会导致链接显示顺序不正确因此若要解决此问题必须嵌入文本以保留按 LeftToRight 显示的单独的 Run。 除了为每种语言提供单独的 Run 之外还可使用一种更好的方法来解决此问题即将不常用的英语文本嵌入到较大的阿拉伯语 Span 中。 下图通过使用 Span 元素中嵌入的 Run 元素说明了这一点 以下示例演示如何在文档中使用 Run 和 Span 元素。 Pagexmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlFlowDirectionRightToLeftFlowDocumentParagraphSpan FlowDirectionRightToLeft ستجد الملف هنا:Run FlowDirectionLeftToRight\\server1\filename\filename1.txt/Runثم باقى النص!/Span/Paragraph/FlowDocument /Page3、Span 元素 Span 元素用作具有不同流方向的文本之间的边界分隔符。 甚至具有相同流方向的 Span 元素也被视为具有不同的双向范围这意味着 Span 元素按容器的 FlowDirection 进行排序只有 Span 元素内的内容才遵循 Span 的 FlowDirection。 下图显示了几个 TextBlock 元素的流方向。 以下示例演示如何使用 Span 和 Run 元素生成上图中显示的结果。 Page xmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationStackPanel TextBlock FontSize20 FlowDirectionRightToLeftRun FlowDirectionLeftToRightالعالم/RunRun FlowDirectionLeftToRight ForegroundRed فى سلام/Run/TextBlockTextBlock FontSize20 FlowDirectionLeftToRightRun FlowDirectionRightToLeftالعالم/RunRun FlowDirectionRightToLeft ForegroundRed فى سلام/Run/TextBlockTextBlock FontSize20 ForegroundBlueالعالم فى سلام/TextBlockSeparator/TextBlock FontSize20 FlowDirectionRightToLeftSpan ForegroundRed FlowDirectionLeftToRightHello/SpanSpan FlowDirectionLeftToRightWorld/Span/TextBlockTextBlock FontSize20 FlowDirectionLeftToRightSpan ForegroundRed FlowDirectionRightToLeftHello/SpanSpan FlowDirectionRightToLeftWorld/Span/TextBlockTextBlock FontSize20 ForegroundBlueHello World/TextBlock/StackPanel/Page 在此示例的 TextBlock 元素中Span 元素根据其父级的 FlowDirection 进行布局但每个 Span 元素中的文本根据其自己的 FlowDirection 流动。 这适用于拉丁语和阿拉伯语也适用于任何其他语言。 添加 xml:lang 下图显示了另一个示例该示例使用数字和算术表达式如 200.021.4221.4。 请注意仅设置了 FlowDirection。 此应用程序的用户将对输出感到失望即使 FlowDirection 正确但数字的形状不是阿拉伯语数字应有的形状。 XAML 元素可以包括 XML 属性 (xml:lang)该属性用于定义每个元素的语言。 XAML 还支持 XML 语言原则即应用于树中父元素的 xml:lang 值将用于子元素。 在上面的示例中由于未对 Run 元素或其任意顶级元素设置语言因此使用了默认的 xml:lang对于 XAML 为 en-US。 Windows Presentation Foundation (WPF) 的内部数字整理算法选择对应语言在本示例中为英语中的数字。 若要正确呈现阿拉伯语数字需要设置 xml:lang。 下图演示添加了 xml:lang 的示例。 以下示例将向应用程序添加 xml:lang。 Pagexmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlFlowDirectionRightToLeftFlowDocumentParagraphSpan FlowDirectionRightToLeft Languagear-SAالعملية الحسابية: 200.021.4221.4/Span/Paragraph/FlowDocument /Page请注意根据目标区域的不同许多语言具有不同的 xml:lang 值例如ar-SA 和 ar-EG 表示阿拉伯语的两个变体。 上述示例说明你需要同时定义 xml:lang 和 FlowDirection 值。 4、非文本元素的 FlowDirection FlowDirection 不仅定义文本在文本元素中的流动方式还定义几乎所有其他 UI 元素的流方向。 下图显示了一个 ToolBar该控件使用水平 LinearGradientBrush 以从左到右渐变绘制其背景。 将 FlowDirection 设置为 RightToLeft 后不仅 ToolBar 按钮是从右到左排列的甚至 LinearGradientBrush 也将其偏移量重新调整为从右到左流动。 下图显示了 LinearGradientBrush 的重新排列。 以下示例绘制了一个 RightToLeftToolBar。 若要从左到右绘制请删除 ToolBar 的 FlowDirection 属性。 Pagexmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentation xmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlToolBar FlowDirectionRightToLeft Height50 DockPanel.DockTopToolBar.BackgroundLinearGradientBrush StartPoint0,0.5 EndPoint1,1LinearGradientBrush.GradientStopsGradientStop ColorDarkRed Offset0 /GradientStop ColorDarkBlue Offset0.3 /GradientStop ColorLightBlue Offset0.6 /GradientStop ColorWhite Offset1 //LinearGradientBrush.GradientStops/LinearGradientBrush/ToolBar.BackgroundButton FontSize12 ForegroundWhiteButton1/ButtonRectangle Width20/Button FontSize12 ForegroundWhiteButton2/ButtonRectangle Width20/Button FontSize12 ForegroundWhiteButton3/ButtonRectangle Width20/Button FontSize12 ForegroundWhiteButton4/ButtonRectangle Width20//ToolBar /PageFlowDirection 异常 在少数情况下FlowDirection 会不按预期方式运行。 本部分介绍其中两种异常。 Image Image 表示用于显示图像的控件。 在 XAML 中该控件可与 Source 属性一起使用后者用于定义要显示的 Image 的统一资源标识符 (URI)。 与其他 UI 元素不同Image 不会从容器继承 FlowDirection。 但是如果将 FlowDirection 显式设置为 RightToLeft则会以水平翻转方式显示 Image。 这可作为一种便捷功能提供给双向内容的开发人员因为在某些情况下水平翻转图像会达到所需的效果。 下图显示翻转后的 Image。 以下示例演示 Image 未能从包含它的 StackPanel 中继承 FlowDirection。 备注 C:\ 驱动器上必须具有名为 ms_logo.jpg 的文件才能运行此示例。 StackPanel xmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentation FlowDirectionRightToLeftImage Sourcefile://c:/ms_logo.jpg Width147 Height50/Separator Height10/Image Sourcefile://c:/ms_logo.jpg Width147 Height50 FlowDirectionLeftToRight /Separator Height10/Image Sourcefile://c:/ms_logo.jpg Width147 Height50 FlowDirectionRightToLeft/ /StackPanel备注 下载文件中包含的内容是 ms_logo.jpg 文件。 该代码假定 .jpg 文件不在项目中而是位于 C:\ 驱动器中的某个位置。 必须将 .jpg 从项目文件复制到 C:\ 驱动器或更改代码才能在项目内查找该文件。 为此请将 Sourcefile://c:/ms_logo.jpg 更改为 Sourcems_logo.jpg。 路径 除 Image 外另一个值得关注的元素是 Path。 Path 是可用于绘制一系列连接的直线和曲线的对象。 就其 FlowDirection 而言它的行为方式类似于 Image例如它的 RightToLeftFlowDirection 是其 LeftToRight 的水平镜像。 但是与 Image 不同的是Path 从容器中继承其 FlowDirection因此用户无需显式指定它。 下面的示例使用 3 条线绘制简单的箭头。 第一个箭头从 StackPanel 继承 RightToLeft 流方向以便从右侧的根测量其起点和终点。 第二个箭头具有显式的 RightToLeftFlowDirection也从右侧开始。 但第三个箭头的起始根位于左侧。  StackPanel xmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentation FlowDirectionRightToLeftPath StrokeBlue StrokeThickness4Path.DataGeometryGroup LineGeometry StartPoint300,10 EndPoint350,30 /LineGeometry StartPoint10,30 EndPoint352,30 /LineGeometry StartPoint300,50 EndPoint350,30 //GeometryGroup/Path.Data/PathPath StrokeRed StrokeThickness4 FlowDirectionRightToLeftPath.DataGeometryGroup LineGeometry StartPoint300,10 EndPoint350,30 /LineGeometry StartPoint10,30 EndPoint352,30 /LineGeometry StartPoint300,50 EndPoint350,30 //GeometryGroup/Path.Data/PathPath StrokeGreen StrokeThickness4 FlowDirectionLeftToRightPath.DataGeometryGroup LineGeometry StartPoint300,10 EndPoint350,30 /LineGeometry StartPoint10,30 EndPoint352,30 /LineGeometry StartPoint300,50 EndPoint350,30 //GeometryGroup/Path.Data/Path /StackPanel下图显示了上一个示例的输出其中使用 Path 元素绘制了箭头 Image 和 Path 这两个示例展示了 WPF 如何使用 FlowDirection。 除了在容器内按特定方向布局 UI 元素外FlowDirection 还可与 InkPresenter在图面上呈现墨迹、LinearGradientBrush、RadialGradientBrush 等元素一起使用。 每当模拟从左到右行为的内容需要从右到左行为反之亦然时Windows Presentation Foundation (WPF) 就会提供该功能。 5、数字替换 一直以来Windows 始终通过以下方式支持数字替换允许对相同数字使用不同区域性形状的表示形式但同时使这些数字的内部存储形式在不同区域设置之间保持统一例如数字虽然以其常见的十六进制值如 0x40、0x41存储但却根据所选的语言进行显示。 这使应用程序无需将数值从一种语言转换为另一种语言就可对它们进行处理例如用户可以在本地化的阿拉伯语 Windows 中打开 Microsoft Excel 电子表格并会看到阿拉伯语形状的数字但在欧洲版 Windows 中打开它时会看到相同数字的欧洲表示形式。 这对其他符号如逗号分隔符和百分比符号来说也是必需的因为在同一文档中它们通常随数字一起出现。 Windows Presentation Foundation (WPF) 沿承了这一传统并为此功能提供了进一步支持以允许用户更好地控制何时以及如何使用替换。 虽然此功能适用于任何语言但它对双向内容尤其有用由于应用程序可能会在各种区域性下运行因此针对特定语言来设置数字形状通常是应用程序开发人员所面临的难题。 控制 Windows Presentation Foundation (WPF) 中的数字替换方式的核心属性是 Substitution 依赖属性。 NumberSubstitution 类指定如何显示文本中的数字。 它有三个定义其行为的公共属性。 下面概括了其中的每个属性 CultureSource 此属性指定如何确定数字的区域性。 它使用三个 NumberCultureSource 枚举值之一。 Override数字区域性是 CultureOverride 属性的区域性。 Text数字区域性是文本运行的区域性。 在标记中这将是 xml:lang或其别名 Language 属性Language 或 Language。 此外它还是派生自 FrameworkContentElement 的类的默认值。 这种类包括 System.Windows.Documents.Paragraph、System.Windows.Documents.Table、System.Windows.Documents.TableCell 等。 User数字区域性是当前线程的区域性。 该属性是 FrameworkElement 的所有子类如 Page、Window 和 TextBlock的默认值。 CultureOverride 仅当 CultureSource 属性设置为 Override 时才使用 CultureOverride 属性否则将忽略。 该属性指定数字区域性。 默认值 null 被解释为 en-US。 Substitution 此属性指定要执行的数字替换类型。 它使用以下 NumberSubstitutionMethod 枚举值之一 AsCulture替换方法根据数字区域性的 NumberFormatInfo.DigitSubstitution 属性决定。 这是默认情况。 Context如果数字区域性为阿拉伯语或波斯语区域性则指定数字取决于上下文。 European数字始终呈现为欧洲数字。 NativeNational使用数字区域性的民族数字由区域性的 NumberFormat 指定呈现数字。 Traditional使用数字区域性的传统数字呈现数字。 对于大多数区域性这与 NativeNational 相同。 但是NativeNational 对某些阿拉伯语区域性会产生拉丁数字而此值对所有阿拉伯语区域性产生阿拉伯数字。 这些值对双向内容开发人员意味着什么 在大多数情况下开发人员可能只需要定义 FlowDirection 和每个文本 UI 元素的语言例如 Languagear-SA 和 NumberSubstitution 逻辑负责根据正确的 UI 显示数字。 以下示例演示如何在阿拉伯语版 Windows 中运行的 Windows Presentation Foundation (WPF) 应用程序中使用阿拉伯语和英语数字。 Page xmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentation xmlns:xhttp://schemas.microsoft.com/winfx/2006/xaml StackPanelTextBlock BackgroundLightGreen FontSize32 Languagear-SA FlowDirectionRightToLeft123/TextBlockTextBox BackgroundLightGreen FontSize32 Languagear-SA FlowDirectionRightToLeft123/TextBoxTextBlock BackgroundLightBlue FontSize32123/TextBlockTextBox BackgroundLightBlue FontSize32123/TextBox/StackPanel /Page下图演示了在阿拉伯语版的 Windows 中运行并显示阿拉伯语和英语数字时上一示例的输出 在此示例中FlowDirection 很重要因为将 FlowDirection 改为设置成 LeftToRight 时会产生欧洲数字。 以下各节介绍如何在整个文档内统一显示数字。 如果未在阿拉伯语版 Windows 上运行此示例所有数字都将显示为欧洲数字。 定义替换规则 在实际的应用程序中可能需要以编程方式设置语言。 例如希望将 xml:lang 属性设置为系统 UI 所用的相同属性或根据应用程序具体状态更改语言。 如果希望根据应用程序状态进行更改请利用 Windows Presentation Foundation (WPF) 提供的其他功能。 首先设置应用程序组件的 NumberSubstitution.CultureSourceText。 使用此设置可确保对于将“User”用作默认值的文本元素如 TextBlock设置不会来自 UI。 例如 TextBlockNametext1 NumberSubstitution.CultureSourceText123456796913 /TextBlock例如在对应的 C# 代码中将 Language 属性设置为 ar-SA。 text1.Language System.Windows.Markup.XmlLanguage.GetLanguage(ar-SA);如果需要将 Language 属性设置为当前用户的 UI 语言请使用下面的代码。 text1.Language System.Windows.Markup.XmlLanguage.GetLanguage(System.Globalization.CultureInfo.CurrentUICulture.IetfLanguageTag);CultureInfo.CurrentCulture 表示当前线程在运行时所用的当前区域性。 最后的 XAML 示例应与下面的示例类似。 Page x:ClassWindowsApplication.Window1xmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlTitleCode Sample Height300 Width300 StackPanelTextBlock Languagear-SA FlowDirectionRightToLeftعربى: 123/TextBlockTextBlock Languagear-SA FlowDirectionRightToLeft NumberSubstitution.SubstitutionEuropeanعربى: 123 /TextBlock/StackPanel /Page最后的 C# 示例应与下面的示例类似。 namespace BidiTest {public partial class Window1 : Window{public Window1(){InitializeComponent();string currentLanguage System.Globalization.CultureInfo.CurrentCulture.IetfLanguageTag;text1.Language System.Windows.Markup.XmlLanguage.GetLanguage(currentLanguage);if (currentLanguage.ToLower().StartsWith(ar)){text1.FlowDirection FlowDirection.RightToLeft;}else{text1.FlowDirection FlowDirection.LeftToRight;}}} }下图显示了任一编程语言的窗口外观该窗口显示阿拉伯语数字 使用 Substitution 属性 Windows Presentation Foundation (WPF) 中的数字替换方式同时取决于文本元素的语言及其 FlowDirection。 如果 FlowDirection 为从左到右则会呈现欧洲数字。 但是如果数字的前面为阿拉伯语文本或者具有设置为“ar”的语言且 FlowDirection 为 RightToLeft则会改为呈现阿拉伯语数字。 但在某些情况下建议创建统一的应用程序例如适用于所有用户的欧洲数字。 或者在具有特定 Style 的 Table 单元格中呈现阿拉伯语数字。 执行此操作的一种简单方法是使用 Substitution 属性。 在下面的示例中第一个 TextBlock 未设置 Substitution 属性因此算法将按预期方式显示阿拉伯语数字。 但是在第二个 TextBlock 中替换设置为欧洲替代了默认的阿拉伯语数字替换此时将显示欧洲数字。 Page x:ClassWindowsApplication.Window1xmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentationxmlns:xhttp://schemas.microsoft.com/winfx/2006/xamlTitleCode Sample Height300 Width300 StackPanelTextBlock Languagear-SA FlowDirectionRightToLeftعربى: 123/TextBlockTextBlock Languagear-SA FlowDirectionRightToLeft NumberSubstitution.SubstitutionEuropeanعربى: 123 /TextBlock/StackPanel /Page在 GitHub 上与我们协作 可以在 GitHub 上找到此内容的源还可以在其中创建和查看问题和拉取请求。
http://www.zqtcl.cn/news/636781/

相关文章:

  • 网站开发pc端和手机端长沙专业个人做网站哪家好
  • 永州网站建设收费标准天长网站开发
  • 做网站分辨率多少钱装修公司10强排名
  • 营销网站建设818gx在南宁做家教兼职的网站
  • 做杂志模板下载网站网站开发产品经理招聘
  • 深圳网站创建公司小程序代理怎么样
  • 所以免费爱做网站营销网站优化推广
  • 莆田网站制作设计东莞营销专业网站建设
  • joomla建站教程北京做网站ezhixi
  • 自己可以做拼单网站吗建设企业网站有哪些
  • 张掖北京网站建设新闻事件
  • 济南网站建设(力选聚搜网络)wordpress文章中写代码
  • 网站后台忘记密码买购网十大品牌网
  • 360免费建站网页链接石家庄建设局网站怎么打不开
  • 东莞网站建做俄罗斯外贸的网站
  • 基于vue.js旅游网站开发网络营销的主要形式有建设网站
  • 医院网站建设要素国外电商网站
  • 甘肃两学一做网站可以制作h5的网站
  • 微信公众号手机网站开发wordpress 集赞系统
  • 怎么做会员积分网站免费ppt模板下载有哪些
  • 六安网站开发如何用微信小程序做网站
  • 华为云自助建站好不好seo技巧分享
  • 做淘宝客的网站wordpress+附件丢失
  • 苏州市城乡建设局网站首页做动漫网站的素材
  • 济南网站建设系统介绍服务网站开发费属于研发支出吗
  • 网站建设方案进行工期安排Wix做的网站在国内打不开
  • 网站后台后缀名qq免费申请账号
  • seo网站优化代码静态网站可以做哪些
  • 网页素材及网站架构制作个人单页网站模板
  • 微小店网站建设价格建设网站设备预算