2011-05-24 40 views
1

我有要求你的屬性網格對象選擇一個枚舉,例如,您有:屬性網格可選成員最好的辦法

enum XScalingType { ShowAll, Fixed, Sigma } 

現在,在此基礎上枚舉選擇,我們只關心某些參數。即:

ShowAll - requires none 
Fixed - double Minimum, double Maximum 
Sigma - double Sigma 

這給我留下了下面的類

class MyPrefs 
    XScalingType XScale 
    double minimum //only matters when XScale = Fixed 
    double maximum //only matters when XScale = Fixed 
    double Sigma //only matters when XScale = sigma 

我不知道如何從這裏着手。我的想法在哪裏,我需要將所有成員都設爲min \ max \ sigma,並且如果他們沒有被使用,就把他們從網格中隱藏起來。

但是,這似乎並不常見。有沒有更正式的方式來使用這些可選參數基於其他枚舉選擇?

我想知道如果我完全從錯誤的方向接近這個。

+0

我想說的是,屬性網格的常見做法是在所有時間都將所有參數保留在網格上,並簡單地記錄如果其他參數以特定方式設置則忽略某些參數的事實。您可能希望以向用戶提示的方式命名參數,例如「FixedMinimum」,「FixedMaximum」。 – mquander 2011-05-24 18:15:52

+0

我一直在搜索微軟使用的標準屬性網格,這似乎也是他們的解決方案 – greggorob64 2011-05-24 18:27:39

回答

2

一個更好的方法是創建狀態感知屬性訪問類似如下:

public double? Sigma 
{ 
    get 
    { 
     if (XScale == XSCalingType.Sigma) 
      return _sigma; 
     else 
      return null; 
    } 
    set { _sigma = value;} 
} 

那麼如果XScale的比適馬其他任何東西,物業西格瑪將顯示爲空。

+0

感謝您的幫助,可空屬性絕對是最好的方法。 – greggorob64 2011-06-01 15:12:43