2015-05-15 35 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

最好的解決方案是將自己的網格組成自定義控件,這些自定義控件有自己的視圖模型和綁定設置。網格很可能由幾個列控件組成,每個控件都有您要查找的屬性。