XAML 如何在代码隐藏中设置ListView的'ScrollViewer.HorizontalScrollMode'?

oymdgrw7  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(101)

我想从代码隐藏中自定义一个ListViewScrollViewer.HorizontalScrollMode。我该怎么做?
在XAML中很容易:

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

但是我如何在C#或C++/CX代码隐藏中做到这一点呢?
Disclaimer: I work for Microsoft.

wwtsj6pe

wwtsj6pe1#

ScrollViewer属性(如VerticalScrollModeVerticalScrollBarVisibility等)是attached properties(就像AutomationProperties一样)。
XAML实际上提供了两种设置这些属性的方法:

  • 物业系统(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执行阶段的附加属性会实作为相依性属性,因此属性系统可以将值储存在共用相依性属性存放区中。因此,附加属性会公开主控类别上的相依性属性识别项。

相关问题