我有一个静态单例类,其中包含用于将文本框数据化为。
的属性using System.ComponentModel;
namespace Masca
{
public class logged : INotifyPropertyChanged
{
public static logged instance = new logged();
public static logged Instance
{
get { return instance; }
}
private string alisa;
public string aliasname
{
get { return alisa; }
set
{
alisa = value;
RaisePropertyChanged("aliasname");
}
}
private string mail;
public string emailadd
{
get { return mail; }
set
{
mail = value;
RaisePropertyChanged("emailadd");
}
}
private void RaisePropertyChanged(string prop)
{
if (PropertyChanged != null)
{
PropertyChanged (this, new PropertyChangedEventArgs(prop));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
}
这是属性访问方法:
loggedin.Instance.emailadd = "email.text";
这是我在我希望访问该属性的所有其他页面的初始化组件中放置的datacontext:
DataContext = loggedin.Instance;
这是绑定TextBox的XAML代码
<TextBox x:Name="email" Text="{Binding emailadd}" Height="19" VerticalAlignment="Top" HorizontalAlignment="Left" Width="211" FontSize="11" Margin="134,417,0,0"/>
<TextBox x:Name="mail" Text="{Binding emailadd}" Height="19" VerticalAlignment="Top" HorizontalAlignment="Left" Width="211" FontSize="11" Margin="134,435,0,0"/>
问题在于,如果我在email.text中输入内容,mail.text只会在mail.text中点击后反映email.text中的内容。
非常感谢帮助。
答案 0 :(得分:2)
尝试设置UpdateSouceTrigger
:
<TextBox x:Name="email" Text="{Binding emailadd,
UpdateSourceTrigger=PropertyChanged,
Mode=TwoWay}" />
请注意UpdateSourceTrigger
的{{1}}默认值为TextBox.Text
,而许多其他属性的默认值为LostFocus
。
答案 1 :(得分:2)
如果您尝试触发每个击键的绑定,则需要设置UpdateSourceTrigger
。
<TextBox Name="itemNameTextBox"
Text="{Binding Path=ItemName, UpdateSourceTrigger=PropertyChanged}" />
这个SO答案描述了一些更多场景(例如过滤按下的键) Bind TextBox on Enter-key press