Суть в том, что не могу привязать в xaml
модель, созданную во viewmodel
.
Если модель получается из SelectedItem ListBox
'а, то все норм. А если через new
то ничего. Сам код.
viewmodel
private CCard selectedCard;
public CCard SelectedCard
{
get { return selectedCard; }
set
{
selectedCard = value;
OnPropertyChanged("SelectedCard");
}
}
private Commands selectedRegnumCommand;
public Commands SelectedRegnumCommand
{
get
{
return selectedRegnumCommand ??
(selectedRegnumCommand = new Commands(obj =>
{
selectedCard = getSelectedCard(SelectedRegnum.Regnum);
}));
}
}
getSelectedCard
- возвращает объект типа CCard
xaml
<StackPanel x:Name="SP_cardInfo" DockPanel.Dock="Right" Width="300" DataContext="{Binding SelectedCard}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120*"/>
<ColumnDefinition Width="180*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="Номер документа:" Grid.Column="0" />
<TextBlock x:Name="Tbl_regNum" Text="{Binding SelectedCard.Regnum, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" Margin="10,0,64,0" />
</Grid>
</StackPanel>
CCard
public string Regnum
{
get { return _regnum; }
set
{
_regnum = value;
OnPropertyChanged("Regnum");
}
}
В модели реализовал INotifyPropertyChanged
. Другие моменты работают. Я так понимаю, что проблема именно в том, что SelectedCard
создается через new
. Подскажите где туплю
Каюсь, проморгал момент. Обращаюсь напрямую к полю selectedCard
, а не через метод public CCard SelectedCard
. Поэтому поле меняется, но интерфейс об этом не знает, отсюда и не идет биндинг в xaml
. А также вылез за пределы контекста
Вы задаете DataContext
у StackPanel
DataContext="{Binding SelectedCard}"
А потом работаете вне этого контекста
{Binding SelectedCard.Regnum, ...}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть BitmapImage и у него есть проблемаЕго нельзя просто создать
Есть числовое(decimal) поле ИНН (10, 12 символов)Первые 2-а числа в ИНН - код региона