我的应用程序包含许多使用ListView
布局的GridView
控件。所有这些都使用自定义Style
customStyle
。我想在所有这些ListView
控件中禁用列重新排序。
我可以在不使用现有Style触及所有控件的情况下执行此操作吗?我尝试了这个,但它似乎不起作用:
<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>
答案 0 :(得分:5)
这是你应该做的:
在此样式定义中
<Style x:Key="{x:Static GridView.GridViewScrollViewerStyleKey}" TargetType="ScrollViewer">
有一个
<GridViewHeaderRowPresenter
它有一个属性allowsColumnReorder 硬编码为假。
...
我知道...... 两岁的线程。 但我敢打赌,人们仍然会读它。
答案 1 :(得分:0)
选中answer。
尝试使用此属性设置网页中所有GridView
的默认样式。
编辑:创建从GridView
继承的新类。并在构造函数中更改AllowsColumnReorder
属性的值,或者将静态构造函数中依赖项属性AllowsColumnReorderProperty
的默认值更改为false。并将此课程用于所有页面中的列表视图。
编辑2 :覆盖依赖项属性的最佳方法 - 在静态构造函数中使用OverrideMetadata方法。
我已经厌倦了使用像
这样的东西 <Setter Property="(ListView.View).(GridView.AllowsColumnReorder)" Value="False"/>
但它没有编译。
答案 2 :(得分:0)
您可以删除示例中的x:key
,将其移至app.xaml,并将其设置为应用中所有GridView
的默认样式。
答案 3 :(得分:0)
我使用ListView控件的附加依赖项属性解决了这个问题。然后,此属性将在GridView上设置该属性。从我的Style我可以设置这个附加的依赖属性。仍然不是一个很好的解决方案,但它确实有效。
答案 4 :(得分:0)
只需将此属性添加到datagrid标记
即可CanUserResizeColumns="False"