方法一:
前端
<FrameworkElement x:Name="dummyElement" Visibility="Collapsed"/> <DataGrid> <DataGrid.Columns> <DataGridTextColumn Header="Test" Binding="{Binding Name}" Visibility="{Binding DataContext.Visible, Source={x:Reference dummyElement}}"/> </DataGrid.Columns> </DataGrid>
方法二:
前端
<Window.Resources> <ResourceDictionary> <FrameworkElement x:Key="ProxyElement" DataContext="{Binding}" /> </ResourceDictionary> </Window.Resources> <!-- Necessary for binding to resolve: adds reference to ProxyElement to tree.--> <ContentControl Content="{StaticResource ProxyElement}" Visibility="Collapsed" /> <mch:MCHDataGrid Height="350" AutoGenerateColumns="False" FlowDirection="LeftToRight" ItemsSource="{Binding PayStructures}" SelectedItem="{Binding SelectedItem}"> <DataGrid.Columns> <DataGridTemplateColumn Width="70" Header="name" IsReadOnly="True" Visibility="{Binding DataContext.Visible, Source={StaticResource ProxyElement}}"> <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding FieldName}" /> </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> </DataGrid.Columns> </mch:MCHDataGrid>
后端窗体下加个属性即可
public System.Windows.Visibility Visible
{
get{return _visible;}
set{_visible=value; OnPropertyChanged("Visible");}
}
private System.Windows.Visibility _visible;
原文地址:https://*.com/questions/22073740/binding-visibility-for-datagridcolumn-in-wpf