2011-05-13 68 views
0

我有2個窗體上的控件。 One numericUpDown(來自Silverlight Toolkit)和一個簡單的矩形numericUpdown ValueChanged MouseLeftButtonDown後

在我彈出與價值的NumericUpDown一個MessageBox矩形的的MouseLeftButtonDown

如果我使用箭頭來更改numericUpDown的值,everyting很好。但是,如果我手動(使用鍵盤)編輯值並立即單擊矩形,它將顯示numericUpDown的前一個值。如果我在矩形上點擊第二個時間,它將顯示新的值。

numericUpDown.ValueChanged事件的Rectangle.MouseLeftButtonDown事件後引發。

這是一個Silverlight錯誤?任何人都知道這個解決方法?

(順便說一句,我不能改變我的矩形控件或事件)

回答

0

至於解決辦法,我建議你創建你自己的控制,如:

public class MyNumericUpDown : NumericUpDown 
    { 
     private TextBox _textBox; 
     public void Sync() 
     { 
      ApplyValue(_textBox.Text); 
     } 
     public override void OnApplyTemplate() 
     { 
      base.OnApplyTemplate(); 
      _textBox = (TextBox)GetTemplateChild("Text"); 
     } 
    } 

現在你可以使用方法同步到syncronize與控制顯示文本價值財產。您可以通過聲明方式或在代碼後面調用XAML的方法。在你的情況下:

private void Rectangle_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
     { 
      myNumericUpDown.Sync(); 
      MessageBox.Show(myNumericUpDown.Value.ToString()); 
     }