使用WPF和Prism。
我有一个视图,包含1个文本块
<UserControl x:Class="ArmoryModule.Views.ResultsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:Views="clr-namespace:ArmoryModule.Views" xmlns:vmdc="clr-namespace:ArmoryModule.ViewModels"
mc:Ignorable="d">
<UserControl.DataContext>
<vmdc:ResultsViewModel />
</UserControl.DataContext>
<Grid>
<TextBlock Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" />
</Grid>
</UserControl>
尝试绑定到ResultsViewModel
下面的相关部分
class ResultsViewModel : ViewModel
{
private Character _character;
public Character Character
{
get { return _character; }
set
{
if (_character != value)
{
_character = value;
RaisePropertyChanged(() => Name);
}
}
}
public string Name
{
get { return _character.Name; }
}
}
建立良好,在启动时休息。我得到一个对象ref没有发送到
上的对象错误的实例get { return _character.Name; }
我知道在启动时没有填充字符,这就是我遇到上述错误的原因。我在创建Character
的位置上毫无头绪,因此我拥有的2个视图模型可以使用它。
答案 0 :(得分:2)
将其添加到视图模型的构造函数
public ResultsViewModel()
{
_character = new Character();
}
或者只是在getter中添加一个检查,例如
get
{
return _character != null ? _character.Name : string.empty;
}
答案 1 :(得分:0)
DERP。
public string Name
{
get { return _character == null ? string.Empty : _character.Name; }
}