Wpf 如何强制ComboBox的文本框只能输入双精度?

Wpf 如何强制ComboBox的文本框只能输入双精度?,wpf,Wpf,我想用一个组合框来存储和输入字体大小 因此,我创建了一个组合框,并将IsEditable设置为true 现在问题来了,我不知道如何强制ComboBox的文本框只能输入double 我该怎么做?你能帮帮我吗 谢谢。您可以在组合框的PreviewTestePut事件中像在文本框中一样处理它 Xaml: 或者您也可以使用Regex。您可以在组合框的PreviewTestePut事件中像在文本框中一样处理它 Xaml: 或者您也可以使用Regex。您可以处理previewtextendeput和Data

我想用一个组合框来存储和输入字体大小

因此,我创建了一个
组合框
,并将
IsEditable
设置为true

现在问题来了,我不知道如何强制ComboBox的文本框只能输入
double

我该怎么做?你能帮帮我吗


谢谢。

您可以在组合框的PreviewTestePut事件中像在文本框中一样处理它

Xaml:


或者您也可以使用
Regex

您可以在组合框的PreviewTestePut事件中像在文本框中一样处理它

Xaml:


或者您也可以使用
Regex

您可以处理
previewtextendeput
DataObject.Pasting
事件。大概是这样的:

private void ComboBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    e.Handled = !IsValid(e.Text);
}

private void ComboBox_Pasting(object sender, DataObjectPastingEventArgs e)
{
    if (!e.DataObject.GetDataPresent(typeof(string)) || !IsValid(e.DataObject.GetData(typeof(string)) as string))
        e.CancelCommand();
}

private static bool IsValid(string s)
{
    double d;
    return double.TryParse(s, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out d);
}
XAML:

<ComboBox IsEditable="True" PreviewTextInput="ComboBox_PreviewTextInput"
              DataObject.Pasting="ComboBox_Pasting" ... >

您可以处理
预览输出
数据对象。粘贴
事件。大概是这样的:

private void ComboBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    e.Handled = !IsValid(e.Text);
}

private void ComboBox_Pasting(object sender, DataObjectPastingEventArgs e)
{
    if (!e.DataObject.GetDataPresent(typeof(string)) || !IsValid(e.DataObject.GetData(typeof(string)) as string))
        e.CancelCommand();
}

private static bool IsValid(string s)
{
    double d;
    return double.TryParse(s, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out d);
}
XAML:

<ComboBox IsEditable="True" PreviewTextInput="ComboBox_PreviewTextInput"
              DataObject.Pasting="ComboBox_Pasting" ... >


我尝试了这种方法,但它无法阻止有人向其中粘贴数据。更重要的是,如果我使用输入法(如Microsoft拼音输入法)输入非英语的内容,它仍然可以成功输入。我尝试了这种方法,但它不能阻止有人向其粘贴数据。此外,如果我使用输入法(如Microsoft拼音输入法)输入非英语的内容,它仍然可以成功输入。