2012-12-06 37 views
1
switch ("Case2") 
     { 
      case (string)Application.Current.FindResource("Case1"); 
       //Do Some logic 
       break; 
      case (string)Application.Current.FindResource("Case2"); 
       //Do Some logic 
       break; 
      case (string)Application.Current.FindResource("Case3"); 
       //Do Some logic 
       break; 
      default: 
       break; 
     } 

我做了這段代碼但它不工作。現在我想分配字符串值((字符串)Application.Current.FindResource(「Case1」))從資源字典獲取常量expression.How是可能的或者有什麼辦法嗎?如何將ResourceDictionary字符串指定爲開關大小寫常量表達式?

回答

3

這是不可能的。根據定義,A constant expression編譯-時間常數。資源字典查找必須在運行時間發生。通常的解決方案是使用一串if語句:

if ("Case2" == (string)Application.Current.FindResource("Case1")) 
{ 
    //Do some logic 
} 
else if ("Case2" == (string)Application.Current.FindResource("Case2")) 
{ 
    //Do some logic 
} 
else if ("Case2" == (string)Application.Current.FindResource("Case3")) 
{ 
    //Do some logic 
} 
+1

+1。少數選擇的「if」,大的動作詞典...... –

相關問題