2015-05-15 39 views
0

我有一个视图模型类,我想用来提供一个数据网格中绑定到多个列的可见性属性。这是我所拥有的片段。查看模型类与多个相似的属性

class ViewVM 
{ 
    private bool[] columnVisible; 

    public ViewVM() 
    { 
    columnVisible = new bool[12]; 
    } 

    private void BuildData(int BuildPeriod) 
    { 
    //Do stuff 
    for (int i = 1; i < 12; i++) 
    { 
     if (i <= BuildPeriod) columnVisible[i] = true; 
     else columnVisible[i] = false; 
    } 
    } 

    public bool Column1Visible { get { return columnVisible[1]; } } 
    public bool Column2Visible { get { return columnVisible[2]; } } 
    public bool Column3Visible { get { return columnVisible[3]; } } 
    //etc 
} 

我的问题是我不想有一个属性绑定到每一列。我宁愿有类似下面的内容,但C#不支持属性中的参数。有没有人有一个建议,我可以做什么类似于以下的东西?

public bool ColumnVisible [int Column] 
{ 
    get { return columnVisible[Column]; } 
} 

谢谢。

+0

您可以使用转换器。即如果你希望列是不可见的,如果它们为null,那么你可以写一个nulltovisibilityconverter并绑定到列值 – user1

+0

出于好奇,为什么不使用Grid类? WPF非常棒,可以扩展基本控件并扩展其功能。 https://msdn.microsoft.com/en-us/library/system.windows.controls.grid%28v=vs.110%29.aspx –

+0

我有一个模型,用于从列表中扩展的列值具有表示列是否重要的​​属性的类,或者表示用户不关心列的值的类。 – Will

回答

0

最好的解决方案是将自己的网格组成自定义控件,这些自定义控件有自己的视图模型和绑定设置。网格很可能由几个列控件组成,每个控件都有您要查找的属性。