如何解决如何在代码隐藏中设置 ListView 的 `ScrollViewer.HorizontalScrollMode`?
我想从代码隐藏中自定义 ListView
的 ScrollViewer.HorizontalScrollMode
。我该怎么做?
在 XAML 中很容易:
<ListView
x:Name="MyListView"
ScrollViewer.VerticalScrollMode="disabled"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
ScrollViewer.HorizontalScrollMode="disabled"
ScrollViewer.HorizontalScrollBarVisibility="Auto">
<!-- ...-->
</ListView>
但是我怎么能在 C# 或 C++/CX 代码隐藏中做到这一点?
解决方法
ScrollViewer
属性(如 VerticalScrollMode
、VerticalScrollBarVisibility
等)是 attached properties(就像 AutomationProperties 是)。
XAML 实际上提供了 two methods 设置这些属性:
- 属性系统(
SetValue
和GetValue
) - XAML 访问器模式
我发现 SetValue
模式非常简单:
// C++/CX
this->MyListView->SetValue(ScrollViewer::VerticalScrollModeProperty,ScrollMode::Disabled);
this->MyListView->SetValue(ScrollViewer::VerticalScrollBarVisibilityProperty,ScrollBarVisibility::Hidden);
this->MyListView->SetValue(ScrollViewer::HorizontalScrollModeProperty,ScrollMode::Disabled);
this->MyListView->SetValue(ScrollViewer::HorizontalScrollBarVisibilityProperty,ScrollBarVisibility::Hidden);
(我没有使用过其他模式)。
此方法适用于所有 AttachedProperties(请参阅 this similar StackOverflow question)。
之所以有效,是因为附加属性的核心是 DependencyProperties,它提供 SetValue
和 GetValue
API。来自附加属性的文档:
Windows 运行时的附加属性实现为依赖属性,以便属性系统可以将值存储在共享依赖属性存储中。因此,附加属性在所属类上公开了一个依赖属性标识符。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。