MVVM下的WPF DataGridTemplateColumn可见性绑定(bind)

标签 wpf binding mvvm datagrid wpfdatagrid

我有一个 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/

相关文章:

select - 你如何使用 knockout.js 来构建一个 <select> 元素的 <option> 包含文本和值,并设置一个初始选择的值?

c# - WPF:如何防止 WriteableBitmap 撕裂?

wpf - 通过 MVVM RelayCommand 从 ListBox 中删除 SelectedItems

c# - 在没有索引的集合上实现 INotifyCollectionChanged

angularjs - Kendo UI 网格下拉菜单和 Angular

javascript - 为 v-bind 添加条件?

c# - 在 WPF Calendar 控件中设置显示月份

c# - 使用Caliburn.Micro的动画启动画面

wpf - 无法通过WPF设置表格宽度

c# - WPF Prism + 现有 WPF 应用程序