经过几个小时的努力解决这个问题,我放弃了,实际上我想知道是否有解决方案。
我有一个WPF视图,它将焦点设置在后面的代码(xaml.cs)的十进制上。我的目标是选择其中的值,因为它加载“0.00”,并且用户必须在输入其值之前删除它是令人沮丧的。我在加载的方法中尝试了以下代码:
private void Loaded_Window(object sender, EventArgs e)
{
txtAmount.AutoSelectBehavior = AutoSelectBehavior.OnFocus;
txtAmount.Focus();
Keyboard.Focus(txtAmount);
}
我还尝试将SelectAllOnGotFocus设置为true,但仍然无法正常工作。有趣的是,如果我在方法中放置调试点,这会选择测试,所以我认为它与加载用户控件有关。有没有人知道如何使这项工作?
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 :(得分:0)
尝试以下方法:
private void [NAME OF YOUR EVENT GOES HERE] (object sender, KeyboardFocusChangedEventArgs e)
{
if (e.KeyboardDevice.IsKeyDown(Key.Tab))
{
SelectAll();
}
}
“SelectAll”真的是这里的主要内容,你可以忽略我认为的if语句。
在XAML中,您必须将属性“GotFocus”添加到您的控件中,如下所示:
<xctk:DecimalUpDown GotFocus="[NAME OF YOUR EVENT GOES HERE]" />
因此,只要它获得焦点,它首先要做的就是选择一切准备好进行编辑。