Столбец таблицы данных WPF TextBox Разрешить ввод числовых значений C # - PullRequest
0 голосов
/ 05 января 2019

У меня есть столбец Datagrid, связывающий обнуляемый int.

<DataGridTextColumn Header = "OVR QTY" Width = "5*" Binding = "{Binding OVERRIDE_QTY, UpdateSourceTrigger = PropertyChanged, StringFormat=N0}"  ElementStyle="{StaticResource STRIKE_THROUGH}">
    <DataGridTextColumn.EditingElementStyle>
        <Style TargetType="{x:Type TextBox}">                                        
            <EventSetter Event="PreviewTextInput" Handler="ODQTY_PreviewTextInput">
            </EventSetter>                                        
        </Style>
    </DataGridTextColumn.EditingElementStyle>
</DataGridTextColumn>

В коде я пытаюсь ограничить его числами и нулями.

Regex regex = new Regex("^[.][0-9]+$|^[0-9]*[.]{0,1}[0-9]*$|^[0-9]*[ ][0-9]*[/]{0,1}[1-9]*$|^[1-9]*[/]{0,1}[1-9]*$");

private void ODQTY_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    TextBox tb = sender as TextBox;
        var result = tb.Text.Insert(tb.SelectionStart, e.Text);
        e.Handled = string.IsNullOrEmpty(result) 
            || !regex.IsMatch(result);
}

Когда я набираю 1 в ячейке, а затем набираю backspace для удаления 1, ячейка таблицы данных не принимает пробел, который, как мне кажется, равен нулю (исправьте, если я ошибаюсь). Не уверен, почему и как заставить его принимать ноль в ячейке.

1 Ответ

0 голосов
/ 05 января 2019

В вашем xaml

<DataGridTextColumn Header = "OVR QTY" Width = "5*" Binding = "{Binding OVERRIDE_QTY, UpdateSourceTrigger = PropertyChanged, .......

Добавить это:

TargetNullValue=''

Похоже на это

<DataGridTextColumn Header = "OVR QTY" Width = "5*" Binding = "{Binding OVERRIDE_QTY, UpdateSourceTrigger = PropertyChanged, TargetNullValue='', StringFormat=N0}"  ElementStyle="{StaticResource STRIKE_THROUGH}">

Я думаю, что это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...