Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Try this</p> <pre><code>public partial class MainWindow : Window { private List&lt;string&gt; visibleColumns; public MainWindow() { InitializeComponent(); InitializeList(); visibleColumns = GetVisibleColumns(); dg.AutoGeneratingColumn += dg_AutoGeneratingColumn; dg.ItemsSource = Templates; } void dg_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) { if(!visibleColumns.Contains(e.Column.Header.ToString())) e.Column.Visibility=Visibility.Collapsed; } List&lt;string&gt; GetVisibleColumns() { return typeof(Template).GetProperties() .Where(p =&gt; p.GetCustomAttributes(typeof(Visible), true) .Where(ca =&gt; ((Visible)ca).IsVisible).Any() ).Select(s =&gt; s.Name).ToList(); } private void InitializeList() { Templates = new List&lt;Template&gt;(); Templates.Add(new Template { County = "abc", Operator = "123", Field = "xyz" }); Templates.Add(new Template { County = "abc", Operator = "123", Field = "xyz" }); Templates.Add(new Template { County = "abc", Operator = "123", Field = "xyz" }); Templates.Add(new Template { County = "abc", Operator = "123", Field = "xyz" }); } public List&lt;Template&gt; Templates { get; set; } } </code></pre> <p><strong>>Template Class</strong></p> <pre><code>public class Template { [Visible(false)] public string County { get; set; } [Visible(true)] public string Operator { get; set; } [Visible(true)] public string Field { get; set; } } </code></pre> <p><strong>>Visible Attribute</strong></p> <pre><code>public class Visible : Attribute { public Visible(bool isVisible) { IsVisible = isVisible; } public bool IsVisible { get; set; } } </code></pre> <p><strong>>xaml</strong></p> <pre><code>&lt;Grid&gt; &lt;DataGrid AutoGenerateColumns="True" x:Name="dg"/&gt; &lt;/Grid&gt; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload