Я хочу, чтобы свойство UserBalance менялось в окне, но это изменение происходит в другом классе.
Это мой банковский счет.cs, где у меня есть баланс, и он изменяется с помощью таких методов, как депозит и т. д.:
public class BankAccount : INotifyPropertyChanged
{
private decimal _balance;
public decimal Balance
{
get { return _balance; }
private set
{
if (_balance != value)
{
_balance = value;
NotifyPropertyChanged();
}
}
}
public event PropertyChangedEventHandler? PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] string? propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
Это Dashboard.xaml.cs, где я хочу, чтобы изменение баланса отображалось в текстовом блоке окна:
public partial class Dashboard : Window, INotifyPropertyChanged
{
private static readonly CultureInfo EuroInfo = new("de-DE");
private User? _currentUser;
private UserRepository? _allUsers;
private decimal _userBalance;
public decimal UserBalance
{
get => _userBalance;
set
{
if (_userBalance != value)
{
_userBalance = value;
NotifyPropertyChanged();
}
}
}
public event PropertyChangedEventHandler? PropertyChanged;
private void NotifyPropertyChanged(string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public Dashboard(User currentUser, UserRepository allUsers)
{
InitializeComponent();
this.DataContext = this;
try
{
this.Title = currentUser.FullName;
_currentUser = currentUser;
_allUsers = allUsers;
UserBalance = _currentUser?.BankAccount?.Balance ?? 0m;
}
catch (NullReferenceException e)
{
MessageBox.Show(e.StackTrace);
}
}
}
Вот как выглядит мой Dashboard.xaml.cs:
public partial class Dashboard : Window
{
//i save the user and the list to pass their values to other windows as well
private User? _currentUser;
private UserRepository? _allUsers;
//i create the balance prop so we can see the changes in the window
private decimal _userBalance;
public decimal UserBalance
{
get => _userBalance;
set
{
_userBalance = value;
}
}
public Dashboard(User currentUser, UserRepository allUsers)
{
InitializeComponent();
this.DataContext = currentUser;
try
{
this.Title = currentUser.FullName;
_currentUser = currentUser;
_allUsers = allUsers;
UserBalance = _currentUser?.BankAccount?.Balance ?? 0m;
if (currentUser.BankAccount != null)
_currentUser.BankAccount.PropertyChanged += BankAccount_PropertyChanged;
}
catch (NullReferenceException e)
{
MessageBox.Show(e.StackTrace);
}
catch (Exception e)
{
MessageBox.Show(e.GetType() + e.StackTrace);
}
}
private void BankAccount_PropertyChanged(object? sender, PropertyChangedEventArgs e)
{
if (e == null || e.PropertyName == null || e.PropertyName == nameof(BankAccount.Balance))
Dispatcher.Invoke(() => UserBalance = _currentUser?.BankAccount?.Balance ?? 0m);
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... in-another
Как связать изменение свойства в моем окне, когда изменение происходит в другом классе? ⇐ C#
Место общения программистов C#
1772281574
Anonymous
Я хочу, чтобы свойство UserBalance менялось в окне, но это изменение происходит в другом классе.
Это мой банковский счет.cs, где у меня есть баланс, и он изменяется с помощью таких методов, как депозит и т. д.:
public class BankAccount : INotifyPropertyChanged
{
private decimal _balance;
public decimal Balance
{
get { return _balance; }
private set
{
if (_balance != value)
{
_balance = value;
NotifyPropertyChanged();
}
}
}
public event PropertyChangedEventHandler? PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] string? propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
Это Dashboard.xaml.cs, где я хочу, чтобы изменение баланса отображалось в текстовом блоке окна:
public partial class Dashboard : Window, INotifyPropertyChanged
{
private static readonly CultureInfo EuroInfo = new("de-DE");
private User? _currentUser;
private UserRepository? _allUsers;
private decimal _userBalance;
public decimal UserBalance
{
get => _userBalance;
set
{
if (_userBalance != value)
{
_userBalance = value;
NotifyPropertyChanged();
}
}
}
public event PropertyChangedEventHandler? PropertyChanged;
private void NotifyPropertyChanged(string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public Dashboard(User currentUser, UserRepository allUsers)
{
InitializeComponent();
this.DataContext = this;
try
{
this.Title = currentUser.FullName;
_currentUser = currentUser;
_allUsers = allUsers;
UserBalance = _currentUser?.BankAccount?.Balance ?? 0m;
}
catch (NullReferenceException e)
{
MessageBox.Show(e.StackTrace);
}
}
}
Вот как выглядит мой Dashboard.xaml.cs:
public partial class Dashboard : Window
{
//i save the user and the list to pass their values to other windows as well
private User? _currentUser;
private UserRepository? _allUsers;
//i create the balance prop so we can see the changes in the window
private decimal _userBalance;
public decimal UserBalance
{
get => _userBalance;
set
{
_userBalance = value;
}
}
public Dashboard(User currentUser, UserRepository allUsers)
{
InitializeComponent();
this.DataContext = currentUser;
try
{
this.Title = currentUser.FullName;
_currentUser = currentUser;
_allUsers = allUsers;
UserBalance = _currentUser?.BankAccount?.Balance ?? 0m;
if (currentUser.BankAccount != null)
_currentUser.BankAccount.PropertyChanged += BankAccount_PropertyChanged;
}
catch (NullReferenceException e)
{
MessageBox.Show(e.StackTrace);
}
catch (Exception e)
{
MessageBox.Show(e.GetType() + e.StackTrace);
}
}
private void BankAccount_PropertyChanged(object? sender, PropertyChangedEventArgs e)
{
if (e == null || e.PropertyName == null || e.PropertyName == nameof(BankAccount.Balance))
Dispatcher.Invoke(() => UserBalance = _currentUser?.BankAccount?.Balance ?? 0m);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79898334/how-to-bind-the-property-change-in-my-window-when-the-change-happens-in-another[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия