Проблема с валидацией текстового ввода WPF

Рейтинг: 0Ответов: 0Опубликовано: 15.05.2023

Есть textbox(ы), которые предназначены для ввода диапазона цены и диапазона мощности двигателя автомобиля. Они привязаны к свойствам объекта SearchParams. Т.е. логика такая, что человек выбирает можно сказать параметры поиска (изменяются свойства объекта SearchParams), и затем по нажатию на кнопку исходя из свойств SearchParams формируется запрос к БД и вытаскиваются оттуда машины. Проблема с textbox(ами), так как их свойства text привязаны к свойствам, у которых тип long и int, они сами изначально подсвечиваются красным, предупреждая об ошибке. Но даже если я в коде им при инициализации окна задам значения начальные, все равно при загрузке окна они будут красные, только если я направлю на эти поля фокус, а затем уберу, пропадает красная обводка, но сверху не пропадает предупреждение. Что мне предпринять?

<TextBox x:Name="priceFromTB" Grid.Column="0" Margin="0,0,3,0"
                     Text="{Binding Source={StaticResource params}, Path=PriceFrom, Mode=OneWayToSource}"
                     PreviewTextInput="textInput_PreviewTextInput"
                     PreviewKeyDown="keyInput_PreviewKeyDown"></TextBox>
            
            <TextBox x:Name="priceToTB" Grid.Column="1" Margin="3,0,0,0"
                     Text="{Binding Source={StaticResource params}, Path=PriceTo, Mode=OneWayToSource}"
                     PreviewTextInput="textInput_PreviewTextInput"
                     PreviewKeyDown="keyInput_PreviewKeyDown"></TextBox>

Это примеры текстбоксов.

public partial class MainWindow : Window
{
    ObservableCollection<Auto> autoCollection;
    public MainWindow()
    {
        InitializeComponent();

        markComboBox.ItemsSource = Categories.marks;
        markComboBox.DisplayMemberPath = "Key";
        markComboBox.SelectedValuePath = "Value";
        
        categoryComboBox.ItemsSource = Categories.bodyType;
        categoryComboBox.DisplayMemberPath = "Key";
        categoryComboBox.SelectedValuePath = "Value";
        
        gearComboBox.ItemsSource = Categories.gearType;
        gearComboBox.DisplayMemberPath = "Key";
        gearComboBox.SelectedValuePath = "Value";
        
        engineComboBox.ItemsSource = Categories.engineType;
        engineComboBox.DisplayMemberPath = "Key";
        engineComboBox.SelectedValuePath = "Value";
        
        transmissionComboBox.ItemsSource = Categories.transmission;
        transmissionComboBox.DisplayMemberPath = "Key";
        transmissionComboBox.SelectedValuePath = "Value";
        
        wheelComboBox.ItemsSource = Categories.wheel;
        wheelComboBox.DisplayMemberPath = "Key";
        wheelComboBox.SelectedValuePath = "Value";
        priceFromTB.Text = "0";
        priceToTB.Text = "100000000000";
        powerFromTB.Text = "0";
        powerToTB.Text = "1000";
    }

Здесь начальные значения задаю. Здесь вот обводка, хотя по сути ошибок не должно быть, так как текстбоксы не пустые.

Вот здесь при нажатии на них и затем потере фокуса пропадает красная обводка, но сверху ничего не пропадает.

Ответы

Ответов пока нет.