如何让过长的字符串可以自动变成 “…” - 从开发人员的角度看 Canvas、Grid

如何让过长的字符串可以自动变成 “…” - 从开发人员的角度看 Canvas、Grid


在 WPF、Silverlight 还没有出来之前,想要有下图这种效果!?

如何让过长的字符串可以自动变成 “…” - 从开发人员的角度看 Canvas、Grid

默认的控件都没有!想要?那就要自已刻一个 Control

若是 Web 的话,那就更惨!还要写一堆的 JS  可以用 CSS3 的 text-ellipse

( 注:感恩 Eric 的提醒,但记得要看浏览器有没有支持 )

现在在 WPF、Silverlight 之中一开始就有内建这样子的属性

尤其是在 Phone 这种小屏幕中更需要

基本上很简单!

只要在 TextBlock 再选 属性 就可以看到 TextTrimming 属性了

如何让过长的字符串可以自动变成 “…” - 从开发人员的角度看 Canvas、Grid

接着选 WordEllipsis 就大功告成!

但不知是否有人跟我一样遇到

如何让过长的字符串可以自动变成 “…” - 从开发人员的角度看 Canvas、Grid

这样子的情况呢? TextTrimming 明明就设了!

但为啥还字还是跑到外面去?

Width 是不是设成自动?

Windows Phone 是不是没有支持这个属性?

Align 是不是设到 right ?

不不不!这个我都检查过了!但跟 MSDN 上说的就是不一样 Orz

最后跟 Eric 讨论时,问了一下这个属性有没有用过!?

Eric 很顺地可以正常转换成 “…”

我心中的 OS :难道真的是 森哥讲的 这就是人品问题?

这时 Eric 说了关键性的一句话!“有没有用 Grid”?

从 Canvas 改成 Grid 后整个就是 晴天霹雳

一切就正常!!

----------------------------------------

为什么 TextBlock 的 TextTrimming 在 Canvas 和 Grid 有不一样的效果?

----------------------------------------

一开始 Canvas 和 Grid 对我来说真的没有什么差异

( 就从开发人员的角度而言 )

直到 TextTrimming 这个属性我才直惊觉到差异很大…

每次看在 MSDN、书籍在介绍 Canvas 、Grid 、StackPanel

都是在说对象是怎么排列的之类

面板名称

说明

Canvas

定义一个区域,您可以在这个区域内依据相对于 Canvas 区域的座标,明确放置子项目。

Grid

定义由数据行和数据列组成的弹性方格区域。

StackPanel

将子项目排列在可为水平或垂直方向的单一行中。

实际上真的没有什么感觉!好像跟开发人员没关系

反正画面出来长的一样,剩下的就随便啦!

查了很久总算有一个可以说服我的了!

MSDN 的 Silverlight 配置系统

http://msdn.microsoft.com/zh-tw/library/cc645025(v=vs.95).aspx#LayoutSystem_LayoutSystem

简单来说!

就是 Canvas 是用一种绝对位置当做座标!

即使画面放大、缩小、超出 Canvas 范围 内容 都不会受到任何影响!

而 Grid 则是会依画面变小而改变 Grid 内的控件

也不允许 内容超出 控件范围!

所以才会造成在 Canvas 中

即使设定了 TextTrimming  过长的字符串依然会跑到外面去的情况发生

以后大家就不会分不清楚到底要用那一个了 如何让过长的字符串可以自动变成 “…” - 从开发人员的角度看 Canvas、Grid

参考数据

Silverlight 配置系统

http://msdn.microsoft.com/zh-tw/library/cc645025(v=vs.95).aspx#LayoutSystem_LayoutSystem

Grid 类

http://msdn.microsoft.com/zh-tw/library/system.windows.controls.grid(v=vs.95).aspx

Canvas 类

http://msdn.microsoft.com/zh-tw/library/system.windows.controls.canvas(v=vs.95).aspx

原文:大专栏  如何让过长的字符串可以自动变成 “…” - 从开发人员的角度看 Canvas、Grid


上一篇:,net开发备忘录#想锤自己两拳#1


下一篇:现在的SQLSERVER数据库监控软件有哪些