3

我有一个应用程序有很多使用布局的ListView控件。GridView所有这些都使用自定义的Style customStyle. 我想在所有这些ListView控件中禁用列重新排序。

我可以在不使用现有样式的所有控件的情况下执行此操作吗?我试过这个,但它似乎不起作用:

<Style x:Key="customStyle"
       BasedOn="{StaticResource ResourceKey={x:Type ListView}}"
       TargetType="{x:Type ListView}">
    <Setter Property="GridView.AllowsColumnReorder" Value="False" />
    ...
</Style>

谢谢!

更新:如果这是不可能的,有没有办法在我的应用程序中默认禁用列重新排序?

更新: 我也试过这个,它不起作用。可能是因为 GridView 没有Style属性。

<Style TargetType="{x:Type GridView}">
    <Setter Property="AllowsColumnReorder" Value="False" />
    ...
</Style>
4

5 回答 5

6

这是你应该做的:

在这种风格定义中

<Style x:Key="{x:Static GridView.GridViewScrollViewerStyleKey}" TargetType="ScrollViewer">

有一个

<GridViewHeaderRowPresenter

它有一个属性 AllowsColumnReorder 将其硬编码为 false。

...

我知道......两年前的线程。但我敢打赌,人们仍然会阅读它。

于 2014-09-07T19:24:53.390 回答
1

只需将此属性添加到您的数据网格标签

CanUserResizeColumns="False"
于 2017-01-28T08:36:15.143 回答
0

检查这个答案

尝试GridView使用此属性设置页面中所有内容的默认样式。

编辑:创建继承自的新类GridView。并更改构造函数中的属性值或将静态构造函数AllowsColumnReorder中依赖属性的默认值更改为 false。AllowsColumnReorderProperty并将此类用于所有页面中的列表视图。

编辑 2:覆盖依赖属性的最佳方法 -在静态构造函数中使用OverrideMetadata方法。

我已经厌倦了使用类似的东西

<Setter Property="(ListView.View).(GridView.AllowsColumnReorder)" Value="False"/>

但它不编译。

于 2012-07-05T17:39:33.623 回答
0

我使用 ListView 控件的附加依赖属性解决了这个问题。然后,此属性将在 GridView 上设置该属性。然后,我可以从我的 Style 设置这个附加的依赖属性。仍然不是一个好的解决方案,但它有效。

于 2012-08-15T11:48:11.613 回答
0

您可以x:key在您的示例中删除,将其移动到 app.xaml,并使其成为GridView您应用中所有内容的默认样式。

于 2012-07-05T17:43:13.737 回答