我使用XAML和数据绑定(MVVM)进行开发。当用户在文本框中输入新字符时,我需要更新标签。
XAML
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TextBox Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Name="textBox1" VerticalAlignment="Top" Width="463" Text="{Binding OriginalText}"/>
<Label Height="28" HorizontalAlignment="Left" Margin="12,41,0,0" Name="label1" VerticalAlignment="Top" Width="463" Content="{Binding ModifiedText}"/>
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="400,276,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
</Grid>
</Window>
视图模型
class MainViewModel : NotifyPropertyChangedBase
{
private string _originalText = string.Empty;
public string OriginalText
{
get { return _originalText; }
set
{
_originalText = value;
NotifyPropertyChanged("OriginalText");
NotifyPropertyChanged("ModifiedText");
}
}
public string ModifiedText
{
get { return _originalText.ToUpper(); }
}
}
我在XAML中添加了一个按钮。这个按钮没有实际作用,只是帮助我失去文本框的焦点。当我失去焦点时,绑定将会被更新并且上方的文本会出现在我的标签中。但是数据绑定只会在文本失去焦点时更新。TextChanged事件不会更新绑定。我想在TextChanged事件中强制更新。我应该使用哪个组件?
Text="{Binding OriginalText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
- Jeff Albrecht