【发布时间】:2011-07-11 10:57:45
【问题描述】:
使用 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; }
}
}
构建良好,启动时中断。我在
上收到未发送到对象错误实例的对象引用get { return _character.Name; }
我知道启动时没有填充字符,这就是我收到上述错误的原因。我有点不知道在哪里创建 Character 以便我拥有的 2 个视图模型可以使用它。
【问题讨论】:
-
只是为了清楚。通过您的设置,如果您有执行 ViewModel.Character.Name = "new name" 的代码,它不会触发属性更改通知并更新 UI。这可能不是您需要做的事情,只是预料到您可能会给自己造成一些混乱。
标签: c# wpf oop data-binding prism