Windows Phone双向绑定不工作
本文关键字:工作 绑定 Phone Windows | 更新日期: 2023-09-27 18:11:45
实际上是双向绑定,但有一个问题。
appbar上有一个按钮。此外,我有一个文本框与双向绑定。现在,如果我在文本框中输入,并且我从文本框中移除了焦点(通过按后退键关闭键盘),那么文本框文本绑定到的Property将得到更新。
但是,如果我在没有关闭键盘的情况下按下AppBar按钮,属性不会得到更新。
这个问题有简单的解决办法吗?
非常感谢所有的帮助。谢谢你!编辑:我试过了。专注于AppBar按钮点击,但仍然没有运气
编辑2:这是我的代码-
<StackPanel>
<TextBlock Text="Title" FontSize="{StaticResource PhoneFontSizeMediumLarge}" Margin="15,0,0,0"/>
<TextBox Name="TitleTB" Text="{Binding Title, Mode=TwoWay}" />
<TextBlock Text="Description" FontSize="{StaticResource PhoneFontSizeMediumLarge}" Margin="15,0,0,0"/>
<TextBox Name="DescriptionTB" Text="{Binding Description, Mode=TwoWay}" AcceptsReturn="True" MaxHeight="300" VerticalScrollBarVisibility="Auto" />
</StackPanel>
cs代码——
public CreateTaskPage()
{
InitializeComponent();
M1 = new MyClass { Description = "Description", Title = "title1" };
this.DataContext = M1;
}
private void ApplicationBarIconButton_Click(object sender, EventArgs e)
{
//save - I change the text in the textbox from title1 to title123 suppose
// But it still shows title1 if I click the appbar button without closing the keyboard
this.Focus();
MessageBox.Show(M1.Title);
}
编辑3:MyClass代码——
public class MyClass : INotifyPropertyChanged
{
private string title;
private string description;
public string Title
{
get { return title; }
set
{
title = value;
OnPropertyChanged("Title");
}
}
public string Description
{
get { return description; }
set
{
description = value;
OnPropertyChanged("Description");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
}
试试这个:
private void ApplicationBarIconButton_Click(object sender, EventArgs e)
{
BindingExpression expression = TitleTB.GetBindingExpression(TextBox.TextProperty);
MessageBox.Show("Before UpdateSource, Test = " + M1.Title);
expression.UpdateSource();
MessageBox.Show("After UpdateSource, Test = " + M1.Title);
}
有关绑定的更多参考,请访问这里Windows Phone数据绑定
只是为了确保,您是否正确地声明了MyClass的属性,如下所示?
class MyClass {
public String Description { get; set; }
public String Title { get; set; }
}
为什么不在ApplicationBarIconButton的click事件中将焦点从文本框转移到其他控件上呢