Когда я ввожу текст в Textbox
, он одновременно обновляет два TextBlocks
. Я пытаюсь восстановить это значение, чтобы сохранить его в базе данных sql. Я временно установил его для отображения значения в MessageBox.WPF Невозможно получить значения привязки MVVM
ViewModel/Модель:
private decimal _amount;
public decimal Amount
{
get
{
return _amount;
}
set
{
_amount = value;
OnPropertyChanged("Amount");
}
}
TextBox Переплет:
<TextBox MaxLength="7" Visibility="{Binding Hide1, Converter={StaticResource BoolToVis},FallbackValue=Visible}" Text="{Binding Amount, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Grid.Row="2" />
TextBlocks Переплет:
<TextBlock Foreground="Black" Margin="0 0 0 0" VerticalAlignment="Top" Grid.Column="3" Text="{Binding Path=Amount}"/>
<TextBlock Grid.Column="3" Text="{Binding Amount}" Foreground="Black" Margin="0 0 0 0" VerticalAlignment="Bottom"/>
SaveCommand:
private async void Save()
{
try
{
MessageBox.Show(string.Format("{0}", Amount));
}
catch (DbEntityValidationException ex)
{
foreach (var en in ex.EntityValidationErrors)
{
var exceptionDialog = new MessageDialog
{
Message = { Text = string.Format("{0}, {1}", en.Entry.Entity.GetType().Name, en.Entry.State) }
};
await DialogHost.Show(exceptionDialog, "RootDialog");
foreach (var ve in en.ValidationErrors)
{
exceptionDialog = new MessageDialog
{
Message = { Text = string.Format("{0}, {1}", ve.PropertyName, ve.ErrorMessage) }
};
await DialogHost.Show(exceptionDialog, "RootDialog");
}
}
}
catch(Exception ex)
{
var exceptionDialog = new MessageDialog
{
Message = { Text = string.Format("{0}", ex) }
};
await DialogHost.Show(exceptionDialog, "RootDialog");
}
}
Когда я ударил сохранить, то MessageBox
показывает 0.
EDIT: Я только что вспомнил, что у меня есть ViewModel
подключен к двум UserControls
. Мой TabLayout
, который обрабатывает содержимое TabItems
; и Payroll, который содержит кнопку сохранения и TabControl
, которая загружает TabLayout
в каждый TabItem
.
DataContext для обоих:
public TabLayout()
{
InitializeComponent();
DataContext = new PayslipModel();
}
public Payroll()
{
InitializeComponent();
DataContext = new PayslipModel();
}
Все ли здесь код одного и того же класса? Вы уверены, что все работает на одном экземпляре этого класса? Вы пробовали отлаживать это? –
Как и где вы устанавливаете datacontext для экземпляра ViewModel? –
@ TaiT я установил его в коде, как это: DataContext = new PayslipModel(); ' – bruh1234