2016-01-20 95 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

相关问题