DataGridColumn - 如何将可见性绑定到DataGrid宽度

时间:2016-11-16 18:41:16

标签: c# wpf datagrid converter

我尝试向用户显示一些不太重要的数据网格列,只有当有足够的空间(整个程序的宽度)可用时。所以我想将列的可见性绑定到带有转换器的datagrid的实际内容。 我写的所有转换器,我写的都很好,但在这种情况下没有发生任何事情,意味着没有调用转换器。我通过调试日志检查了一下。

<mui:DataGridTextColumn Header="Kilometer" 
                        MinWidth="20" 
                        Width="SizeToCells"
                        Binding="{Binding Path=Kilometer, TargetNullValue='-', FallbackValue='-'}"  
                        Visibility="{Binding Path=ActualWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, TargetNullValue=Collapsed, FallbackValue=Collapsed, Converter={StaticResource IntAsLimit2VisibilityCollapsed}, ConverterParameter=1300}"
                        />

让我出错?它可能在这种组合中不可能吗?

1 个答案:

答案 0 :(得分:0)

如上所述here,DataGrid列不在DataGrid的Visual树中,我们无法使用DataContext到达外RelativeSource。 我们只能使用x:引用外部FrameworkElement。

此外,here是一个类似的问题,可能的解决方案(您不需要设置宽度,可能会避免循环引用)。