2011-12-09 34 views
-3

要做到這一點的正確方法是什麼?這種方式是行不通的:如何...如果聲明和按鈕內容「WP7」

if (((String)enterAmountButton.Content) == "") 
MessageBox.Show("Please enter the total bill amount."); 
else if (((String)enterTipButton.Content) == "") 
MessageBox.Show("Please enter the tip % amount."); 

這種方式是不工作也不:

if (enterAmountButton.Content == "") 
MessageBox.Show("Please enter the total bill amount."); 
else if (enterTipButton.Content == "") 
MessageBox.Show("Please enter the tip % amount."); 
+0

請在發佈之前嘗試調試..我相信您可以看到內容的類型並將其轉換爲適當的字符串。 –

回答

-1
var amountButtonString = enterAmountButton.Content as string; 
     var enterTipButtonString = enterTipButton.Content as string; 
     if (String.IsNullOrEmpty(amountButtonString)) 
      MessageBox.Show("Please enter the total bill amount."); 
     else if (String.IsNullOrEmpty(enterTipButtonString)) 
      MessageBox.Show("Please enter the tip % amount."); 

會工作。但是,你如何期待獲得字符串?你最有可能想要在按鈕旁邊的TextBox中的值是否正確?

在這種情況下:

if (String.IsNullOrEmpty(amountTextBox.Text)) 
       MessageBox.Show("Please enter the total bill amount."); 
      else if (String.IsNullOrEmpty(tipTextBox.Text)) 
       MessageBox.Show("Please enter the tip % amount."); 

其中amountTextBox & tipTextBox是你TextBoxesx:Name

最後一件事:

可能有更好的方法來處理這個問題。例如,如果你處理的KEYUP &框TextChanged在文本框的事件,在文本中存在(甚至更好,有效的文本;)僅啓用按鈕)

你可以使用一個轉換器太:

public class StringToEnabledConverter : IValueConverter 
    { 
     #region IValueConverter Members 

     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      var val = value as string; 
      if (val == null) 
       throw new ArgumentException("value must be a string."); 

      return !string.IsNullOrEmpty(val); 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 

     #endregion 
    } 

添加參考你的轉換器<Converters:StringToEnabledConverter x:Key="StringToEnabledConverter" />

,並在您的按鈕,

<TextBox x:Name="amountTextBox /> 
<Button x:Name="enterAmountButton" Enabled="{Binding ElementName=amountTextBox, Path=Text, Converter={StaticResource StringToEnabledConverter}}" /> 
+0

即時通訊按鈕是什麼。當頁面加載時,按鈕文本爲空。當用戶點擊按鈕時,用戶被引導到第二頁,在那裏他輸入一些數字。當他回到上一頁時,這些數字將顯示在按鈕文本中。我只想讓用戶確保向每個文本輸入數據,如果他不輸入數據,我想顯示一條消息,告訴他將數據輸入到沒有文本的按鈕。 – iamrelos

+0

@ Twenty40比第一段代碼有什麼問題? –

+0

感謝willmel ...你的第一個建議工作.. – iamrelos

0
if ((string)(enterAmountButton.Content) == "") 
MessageBox.Show("Please enter the total bill amount."); 
else if ((string)(enterTipButton.Content) == "") 
MessageBox.Show("Please enter the tip % amount."); 

或可替代

if (enterAmountButton.Content.ToString() == "") 
MessageBox.Show("Please enter the total bill amount."); 
else if (enterTipButton.Content.ToString() == "") 
MessageBox.Show("Please enter the tip % amount."); 
+0

第一個解決方案假定內容可以轉換爲字符串。如果不行,你需要使用'ToString()' –

0

嘗試是這樣的:

if(enterAmountButton.Content.ToString().Trim() == String.Empty) 
MessageBox.Show("Please enter the total bill amount."); 
else if (enterTipButton.Content.ToString().Trim() == String.Empty) 
MessageBox.Show("Please enter the tip % amount."); 

Trim()確保沒有任何開頭或結尾空格。也許這就是爲什麼你的第一次嘗試不工作?

+0

而不是String.Empty。我們可以使用string.IsNullOrWhiteSpace(enterAmountButton.Content.ToString()。Trim()) –