微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在代码隐藏中设置 ListView 的 `ScrollViewer.Horizo​​ntalScrollMode`?

如何解决如何在代码隐藏中设置 ListView 的 `ScrollViewer.Horizo​​ntalScrollMode`?

我想从代码隐藏中自定义 ListViewScrollViewer.HorizontalScrollMode。我该怎么做?

在 XAML 中很容易:

<ListView
    x:Name="MyListView"
    ScrollViewer.VerticalScrollMode="disabled"
    ScrollViewer.VerticalScrollBarVisibility="Hidden"
    ScrollViewer.HorizontalScrollMode="disabled"
    ScrollViewer.HorizontalScrollBarVisibility="Auto">
    <!-- ...-->
</ListView>

但是我怎么能在 C# 或 C++/CX 代码隐藏中做到这一点?

解决方法

ScrollViewer 属性(如 VerticalScrollModeVerticalScrollBarVisibility 等)是 attached properties(就像 AutomationProperties 是)。

XAML 实际上提供了 two methods 设置这些属性:

  • 属性系统(SetValueGetValue
  • 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,它提供 SetValueGetValue API。来自附加属性的文档:

Windows 运行时的附加属性实现为依赖属性,以便属性系统可以将值存储在共享依赖属性存储中。因此,附加属性在所属类上公开了一个依赖属性标识符。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。