我有一个非常简单的MVVM Light应用程序,它有一个文本块和一个文本框。我要做的是使用MVVM Light Toolkit和数据绑定将textblock值设置为文本框值。当我运行程序时,文本块文本不会更新。
private string _name = "Test Name";
public string Name
{
get
{
return _name;
}
set
{
_name = value;
RaisePropertyChanged("NameChanged");
}
}
这是XAML。 “测试名称”显示正常,但不会更改为文本框的值。 正文块:
<TextBlock x:Name="NameTitle"
Text="{Binding Name}"
Margin="-3,-8,0,0"/>
文本框:
<TextBox Text="{Binding Name, Mode="TwoWay"}" x:Name="tb"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontSize="40" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="LostFocus">
<commands:EventToCommand Command="{Binding Name}"
CommandParameter="{Binding Text, ElementName=tb}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
答案 0 :(得分:4)
您应该将“Name”传递给RaisePropertyChanged而不是“NameChanged”。另一种解决方案是使用ElementName
将TextBlock直接绑定到TextboxXAML:
<TextBlock x:Name="NameTitle" Text="{Binding ElementName=tb, Path=Text}" Margin="-3,-8,0,0"/>