Обновление TextBox в UserControl WPF MVVM

210
28 марта 2022, 15:10

Есть MainWindow, в который добавлен UserControl. Внутри UserControl есть 2 кнопки и текстбокс (что то по типу NumericUpDown). При нажатии на кнопки увеличения и уменьшения числа, свойство обновляется, но TextBox не обновляется. Не могу понять как правильно обновить TextBox.

MainWindow:

<Window x:Class="GenerateDocumentation.View.MainWindow"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:viewModel="clr-namespace:GenerateDocumentation.ViewModel"
             xmlns:view="clr-namespace:GenerateDocumentation.View"
             mc:Ignorable="d" Title="Выгрузка документации"
             d:DesignHeight="435" d:DesignWidth="400" 
             Height="445" Width="400" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">
    <Window.DataContext>
        <viewModel:MainViewModel/>
    </Window.DataContext>
    <Grid>
        <view:NumericUpDown Grid.Column="3" Grid.Row="5" DataContext="{Binding NumericUpDownViewModel}" />
    </Grid>
</Window>

MainViewModel:

public class MainViewModel : ModelBase
{
public MainViewModel()
{
    NumericUpDownViewModel = new NumericUpDownViewModel();
}
private NumericUpDownViewModel _numericUpDownViewModel;
public NumericUpDownViewModel NumericUpDownViewModel
{
    get => _numericUpDownViewModel;
    set
    {
        _numericUpDownViewModel = value;
        OnPropertyChanged(nameof(NumericUpDownViewModel));
    }
}
private int _numberCab = Properties.Settings.Default.NumberCab;
public int NumberCab
{
    get => _numberCab;
    set
    {
        _numberCab = value;
        OnPropertyChanged(nameof(NumberCab));
    }
}
}

UerControl:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition Width="20"/>
    </Grid.ColumnDefinitions>
    <Grid Grid.Column="1">
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Button Content="▲" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" FontSize="9"
                Command="{Binding UpCommand}"/>
        <Button Grid.Row="1" Content="▼" 
                VerticalContentAlignment="Center" HorizontalContentAlignment="Center" FontSize="9"
                Command="{Binding DownCommand}"/>
    </Grid>
        <TextBox IsReadOnly="True" Grid.Column="0" HorizontalContentAlignment="Right" VerticalContentAlignment="Center" 
                 Text="{Binding Number, UpdateSourceTrigger=PropertyChanged}"/>
</Grid>

UserControlViewModel:

public class NumericUpDownViewModel : ModelBase
{
private ICommand _upCommand;
public ICommand UpCommand
{
    get
    {
        return _upCommand ?? (_upCommand = new RelayCommand(o => { _number++; }));
    }
}
private ICommand _downCommand;
public ICommand DownCommand
{
    get
    {
        return _downCommand ?? (_downCommand = new RelayCommand(o => { _number--; }));
    }
}

private int _number = Properties.Settings.Default.NumberCab;
public int Number
{
    get => _number;
    set
    {
        _number = value;
        OnPropertyChanged(nameof(Number));
    }
}

}

В чем может быть проблема? Заранее спасибо.

READ ALSO
Определение констант в проекте Define Constant

Определение констант в проекте Define Constant

Есть 2 проектаВложенный проект имеет 2 модели: Model1in и Model1Out

96
Наследование от обобщенного класса с IEnumerator

Наследование от обобщенного класса с IEnumerator

Вопрос больше теоретическийНо буду признателен и за практическое решение, а дальше, на его основе, смогу додумать

74
Многоуровневая архетектура(Class Library)

Многоуровневая архетектура(Class Library)

Пусть нужно сделать проект с многоуровневой архитектуройКак и в каких случаях нужно делать так: Class Libraries: Entites, DLayer, DTO,BLayer, Presenttion Layer, Core или...

90
DataGridView с датами

DataGridView с датами

Есть таблица

165