底线是我无法绑定到xaml
在viewmodel
. 如果模型是从SelectedItem ListBox
'a获得的,那么一切都很好。如果通过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
。告诉我我哪里蠢
DataContext
你问StackPanel
然后你在这个环境之外工作
我承认,我错过了那一刻。我是直接访问字段
selectedCard
,而不是通过方法public CCard SelectedCard
。因此,字段发生变化,但接口不知道,因此没有绑定到xaml
. 也断章取义。