MVVM模式里TextBox绑定GotFocus事件和Text值后无法获取到Text值

zhangsx 2014-12-26 09:45:33
图怎么传不上来?

就是要实现一个查找框,平时用灰色在输入框里显示“请输入姓名查找”,当获取焦点后,这句提示就消失掉的那种功能,具体代码如下:
Xaml:

<TextBox Name="SerTextBox" Margin="0" TextWrapping="Wrap" Text="{Binding Filter}" Grid.ColumnSpan="2" Foreground="#FFB1B1B1" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="GotFocus">
<i:InvokeCommandAction Command="{Binding TextBoxGotFocusCommand}"/>
</i:EventTrigger>
<i:EventTrigger EventName="LostFocus">
<i:InvokeCommandAction Command="{Binding TextBoxLostFocusCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>

在ViewModel里是这样的:

private string filter;

public string Filter
{
get { return filter; }
set { filter = value;
this.RaisePropertyChanged("Filter");
}
}

private void GotFocusCommandExecute()
{
if (this.Filter.Trim() == "输入姓名或身份证号查找")
{
this.Filter = "";

}

}

private void serButMouseDownCommandExecute()
{
if (this.Filter != "")
{
//写查询代码 1
}
}

运行测试后发现,在1这里,无论你输入什么,this.Filter永远是空值,一开始是觉得绑定模式有问题,于是将Text的绑定模式写成Mode=TwoWay,发现还是不行。请问该如何解决?谢谢!
...全文
650 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
腻害的小笼包 2015-01-07
  • 打赏
  • 举报
回复
serButMouseDownCommandExecute() 是哪里来的?
wjq 2014-12-26
  • 打赏
  • 举报
回复
那个,记得有个控件叫 WatermarkTextBox 的啊……就是你要的功能,微软已经封装好的。 WPF似乎直接由,Silverlight的微软有提供开源源代码,自己下载了编译

1,978

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧