【问题标题】:How do I set ListView's `ScrollViewer.HorizontalScrollMode` in codebehind?如何在代码隐藏中设置 ListView 的 `ScrollViewer.Horizo​​ntalScrollMode`?
【发布时间】:2021-06-07 19:43:30
【问题描述】:

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

在 XAML 中很容易:

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

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

【问题讨论】:

    标签: xaml uwp winui


    【解决方案1】:

    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 运行时的附加属性被实现为依赖属性,因此属性系统可以将值存储在共享的依赖属性存储中。因此,附加属性会在所属类上公开一个依赖属性标识符。

    【讨论】:

      猜你喜欢
      • 2018-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-07
      • 2012-11-28
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      相关资源
      最近更新 更多