2016-01-20 51 views
0

經過數小時的試圖解決這個問題,我放棄了,並且真的想知道是否有解決方案。WPF擴展工具包 - 在DecimalUpDown中選擇值

我有一個WPF視圖,它將焦點放在從後面的代碼(xaml.cs)開始的小數點後面。我的目標是在它加載「0.00」之後選擇它內部的值,用戶在輸入值之前必須將其刪除,這令人沮喪。我試圖在加載方法如下代碼:

private void Loaded_Window(object sender, EventArgs e) 
    { 
     txtAmount.AutoSelectBehavior = AutoSelectBehavior.OnFocus; 

     txtAmount.Focus(); 
     Keyboard.Focus(txtAmount); 
    } 

我也曾嘗試設置SelectAllOnGotFocus爲真,它仍然沒有工作。有趣的是,如果我在該方法中加入了一個調試點,這會選擇測試,所以我認爲它與加載用戶控件有關。有沒有人有任何指示如何使這項工作?

的XAML decimalupdown:

<xctk:DecimalUpDown x:Name="txtAmount" d:LayoutOverrides="Height" Minimum="0" Maximum="99999999.99" ShowButtonSpinner="False" UpdateValueOnEnterKey="True" Text="{Binding Amount, UpdateSourceTrigger=PropertyChanged}" AllowSpin="False" FormatString="N2" > 
+0

http://doc.xceedsoft.com/products/XceedWpfToolkit/Xceed.Wpf.Toolkit~Xceed.Wpf.Toolkit.Primitives.UpDownBase%601~TextBox.html表明也許你想關注文本框控制不是控制本身。如果你想突出顯示文本,那麼它就是一個文本框,你可以使用文本框本身的SelectAll方法。 –

+0

我同意你的觀點,我認爲這也是正確的做法。不幸的是我試圖從DecimalUpDown訪問文本框,它不會讓我這樣做。 – NetUser101

+0

你可以從'DecimalUpDown'派生自己的類,這樣你就可以訪問'protected TextBox',然後,只要方便,就調用'TextBox.Focus()',例如'Loaded'事件; – jsanalytics

回答

0

嘗試以下操作:

private void [NAME OF YOUR EVENT GOES HERE] (object sender, KeyboardFocusChangedEventArgs e) 
     { 
      if (e.KeyboardDevice.IsKeyDown(Key.Tab)) 
      { 
       SelectAll(); 
      } 
     } 

的 「全選」 真的是最主要的事情在這裏,你可以忽略if語句,我相信。

在XAML,你將不得不屬性「的GotFocus」添加到你的控制,像這樣:

<xctk:DecimalUpDown GotFocus="[NAME OF YOUR EVENT GOES HERE]" /> 

所以,每當它獲得焦點,它做的第一件事是選擇一切準備編輯。

+0

我試過這個,但DecimalUpDown沒有SelectAll方法。 – NetUser101

+0

哦。這很奇怪。 雖然它可以選擇其中的字符,對吧?它必須有像SelectAll這樣的東西。 (抱歉,答案沒有奏效)。 – Logan

+0

是的問題是我不能以編程方式選擇它內部的整個值,但是如果我真的用鼠標點擊它,它會選擇它。 – NetUser101

相關問題