Как отобразить данные в TextBox из DataContext?
Имеется класс CardModel
class CardModel : ObservableObject
{
private string _sh;
public string Sh
{
get { return _sh; }
set { _sh = value;
OnPropertyChanged();
}
}
private string _equip;
public string Equip
{
get { return _equip; }
set { _equip = value; }
}
public CardModel()
{
}
}
Имеется форма Card, на ней есть TextBox, который биндит Sh:
<TextBox x:Name="testTB" Text="{Binding Path=Sh, UpdateSourceTrigger=PropertyChanged}" Height="30" Margin="481,20,-279,380" FontSize="20"/>
У формы есть DataContext
<Window.DataContext>
<local1:CardModel/>
</Window.DataContext>
Когда форма открывается, в неё передается sh типа long. И если в инициализации формы написать textbox.text = sh.ToString(); то все работает. Но это неправильно. Я хочу, чтобы textbox биндил данные из DataConext. Я пытаюсь сделать так:
public Window1(long sh)
{
InitializeComponent();
DataContext = new CardModel();
CardModel card = new CardModel();
card.Sh = sh.ToString();
}
Но textbox'у вообще пофигу. Но если запустить цикл с перезаписью переменной внутри CardModel, то textbox вообще с радостью все будет отображать.
Так вот вопрос: как, следуя паттерну MVVM сделать так, чтобы при открытии новой формы, в которую передается инфо с родительской формы, эта информация отображалась в textbox
Источник: Stack Overflow на русском