我有一个 DataGrid 绑定(bind)到我的 ViewModel 中的 ICollectionView。 DataGrid 位于 UserControl 内,该 UserControl 用于几种不同的数据场景,其中一些需要某些 DataGrid 列,而另一些则不需要。
我只想将 DataGridTemplateColumn 的 Visibility 属性绑定(bind)到内部标签的 Content 属性,这样如果没有任何行包含值,它将被隐藏。我有一个字符串到可见性转换器集,但不知道如何找到内部标签的内容属性。
<DataGridTemplateColumn Header="Groups" Width="*" CanUserSort="True" SortMemberPath="Groups" Visibility="{Binding ElementName=lbl, Path=Content, Converter={StaticResource StringToVisibilityConverter}}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Name="lbl" Content="{Binding Path=Groups}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
有什么建议吗?
最佳答案
我在 Stack Overflow 的某个地方读到(找不到确切的帖子),DataGridColumn 没有分配数据上下文,因为它们不是 FrameworkElement。为了解决这个问题,我不得不使用与此类似的代码:
<DataGridTemplateColumn
Header="Groups"
Width="*"
CanUserSort="True"
SortMemberPath="Groups"
Visibility"{Binding RelativeSource={x:Static RelativeSource.Self},
Path=(FrameworkElement.DataContext).IsGroupsVisible,
Converter={StaticResource booleanToVisiblityConverter}}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Label Name="lbl" Content="{Binding Path=Groups}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Where
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="booleanToVisibilityConverter" />
</UserControl.Resources>
关于MVVM下的WPF DataGridTemplateColumn可见性绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5341403/