I use XAML and data binding (MVVM). I need to update a Label when my user write a new text character in a TextBox.
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>
ViewModel
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(); }
}
}
I added a button in the XAML. The button do nothing but help me to lose the focus of my textbox. When I lose the focus the binding is updated and the upper text appears in my label. But the data binding is only ever updated when the text loses focus. The TextChanged event doesn't update the binding. I would like to force the update on the TextChanged event. How can I do that? What component should I use?