在下面的示例中,当我在 TextBox 中键入一个新字符串并用 Tab 标记出来时,TextBlock 会更新,但 TextBox 会保留我输入的值,而不是使用修改后的字符串进行更新。任何想法如何改变这种行为?
<Page
x:Class="App1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App1"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}" Margin="106,240,261,187">
<StackPanel>
<TextBox Text="{Binding MyProp, Mode=TwoWay}"/>
<TextBlock Text="{Binding MyProp}"/>
</StackPanel>
</Grid>
</Page>
public class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public ViewModel()
{
MyProp = "asdf";
}
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
protected bool SetField<T>(ref T field, T value, string propertyName)
{
if (EqualityComparer<T>.Default.Equals(field, value)) return false;
field = value;
OnPropertyChanged(propertyName);
return true;
}
private string m_myProp;
public string MyProp
{
get { return m_myProp; }
set
{
m_myProp = value + "1";
OnPropertyChanged("MyProp");
}
}
}