【发布时间】:2014-08-01 01:47:45
【问题描述】:
我正在为 Windows 商店 (xaml/c#) 制作一个应用程序,在这个应用程序中我创建了一个文件属性列表。一个属性是文件路径,这总是太长。我的解决方案是在选择此文本块时进行此侧滚动。 选中后,文本将开始滚动,以使所有信息都可读。 (滚动条)
我找不到实现这一点的属性,而且我发现很难为此创建自定义函数。你能帮助我吗?
【问题讨论】:
标签: c# xaml windows-store-apps
我正在为 Windows 商店 (xaml/c#) 制作一个应用程序,在这个应用程序中我创建了一个文件属性列表。一个属性是文件路径,这总是太长。我的解决方案是在选择此文本块时进行此侧滚动。 选中后,文本将开始滚动,以使所有信息都可读。 (滚动条)
我找不到实现这一点的属性,而且我发现很难为此创建自定义函数。你能帮助我吗?
【问题讨论】:
标签: c# xaml windows-store-apps
我会重新考虑这个想法。我有很多次这个想法,但总是被设计师拒绝。我认为动画文本可能比剪辑文本更烦人。更好的方法可能是将其包裹在适当的位置,或者如果您位于项目高度有限的列表中 - 仅在点击后显示全文 - 使用一些弹出窗口或在点击项目的详细信息视图中。
话虽如此 - 要对其进行动画处理,您可以将TextBlock 放入Canvas,将Canvas 的Clip 设置为定义您的RectangleGeometry剪辑区域(并在大小更新时对其进行更新),然后为TextBlock 的Canvas.X 属性设置动画。问题在于 Canvas.X 不是“独立”属性,因此您需要在动画上设置 DoubleAnimation.EnableDependentAnimation="true" 并且仍然可以获得相当不稳定的动画。
更好的选择似乎是为TextBlock 的RenderTransform 设置动画(例如,将其设置为TranslateTransform 并定位动画中变换的X 属性),但上次我检查过 - 这可能会以已剪辑的形式为 TextBlock 设置动画,因此您仍然看不到它不适合屏幕的部分。不过你可以试试。
将TextBlock 放入ScrollViewer 可能效果更好,但它会遇到与Canvas 解决方案类似的问题,因为ScrollViewer 甚至没有动画偏移财产。在 Windows 8.1 中,当您调用 ScrollViewer.ChangeView() 时,您会获得内置动画,但这可能会动画太快。在 WinRT XAML 工具包中的 ScrollToHorizontalOffsetWithAnimation() ScrollViewer 扩展方法中,可以借助代理依赖属性或其他每帧依赖动画。
【讨论】: