2012-06-21 132 views
0

我有我的viewmodel中返回一個自定義類屬性的int屬性。我檢查類的引用是否爲空,在這種情況下,我想返回一些空值到視圖,以便不顯示任何值。WPF屬性返回int null

的代碼是這樣的:

public int percentage 
{ 
get { 
    if (customClass != null) 
    { 
     return customClass.getInt(); 
    } 
    else 
    { 
     return 0; 
    } 
... 
} 

回答

4

如果你想返回一個「沒有價值」的結果,你應該返回null。因爲這不是一個int一個有效的值,你必須改變屬性的類型是int?代替:

public int? Percentage 
{ 
    get { return customClass == null ? null : customClass.getInt(); } 
} 

如果你還沒有見過的語法,int?System.Nullable<int>簡寫。

不要忘了,您還可以通過爲綁定定義合適的Converter,將Percentage的值真正轉換爲您真正喜歡的任何內容。

+0

感謝您的回答。我聽說可以空,但從來沒有使用它。只有一個問題,現在在我的setter中,我應該如何轉換int?爲int?只是因爲我不想改變我的班級類型。 – Louro

+0

@Louro:這取決於在這種情況下'null'的含義,即使在給定業務邏輯的情況下它是有意義的。例如,'customClass'是做什麼的?什麼是'getInt()'應該建模?這意味着'customClass == null'是什麼意思? – Jon

+0

我的customClass被初始化爲null,然後分配一個服務調用返回。當服務調用有一些錯誤時,customClass爲空。在這種情況下,我希望視圖不顯示任何值。 – Louro

1

int是一個值類型,所以不能爲空。相反,您可以返回int?(這是Nullable<int>的簡寫),它可以爲空,也可以指定某些特定的int值,如0適合於當customClass == null時。這當然取決於你的要求。

public int? Percentage { 
    get { 
     if (customClass != null) 
      return customClass.getInt(); 
     else 
      return null; 
    } 
} 

任何有電話Percentage將需要檢查Percentage.HasValue,看它是否是空或不是,並使用Percentage.Value提取實際的整數,如果Percentage.HasValuetrue這將正常工作。