依赖属性强制绑定问题
我安装了 VS2008 和 VS2010,并且我看到一个非常奇怪的行为
在 VS2008 中,我有一个简单的 WPF 应用程序:
<TextBox x:Name="textbox" Text="{Binding Path=MyProperty,Mode=TwoWay}"></TextBox>
当我在文本框中输入随机字符串并点击选项卡时
public Window1()
{
InitializeComponent();
DataContext = this;
}
public string MyProperty
{
get { return (string)GetValue(MyPropertyProperty); }
set { SetValue(MyPropertyProperty, value); }
}
public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.Register("MyProperty", typeof(string), typeof(Window1), new PropertyMetadata("default",null,Coerce));
private static object Coerce(DependencyObject d, object baseValue)
{
return "Coerced Value";
}
,我希望将 textbox.Text 重置为“强制值” ”。如果我调试,我会发现应用程序在 Coerce 函数中中断,但 UI 未更新。
有趣的是,同样的代码可以在 VS2010 中运行,UI 会使用强制值进行更新。 有人知道发生了什么事吗?
这是 WPF 错误吗?或者我错过了什么?
I have both VS2008 and VS2010 installed, and I see a very strange behavior
In VS2008, I have a simple WPF app:
<TextBox x:Name="textbox" Text="{Binding Path=MyProperty,Mode=TwoWay}"></TextBox>
and
public Window1()
{
InitializeComponent();
DataContext = this;
}
public string MyProperty
{
get { return (string)GetValue(MyPropertyProperty); }
set { SetValue(MyPropertyProperty, value); }
}
public static readonly DependencyProperty MyPropertyProperty = DependencyProperty.Register("MyProperty", typeof(string), typeof(Window1), new PropertyMetadata("default",null,Coerce));
private static object Coerce(DependencyObject d, object baseValue)
{
return "Coerced Value";
}
When I enter random string in textbox and hit tab, I expect the textbox.Text to be reset to "Coerced Value". If I debug I see that the app breaks in the Coerce function but the UI is not updated.
Interestingly this same code works in VS2010, the UI gets updated with Coerced value.
Anybody has an idea whats happening?
Is it a WPF bug? or am I missing something?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您必须通过
UpdateTarget()
强制更新。看一下 http ://social.msdn.microsoft.com/forums/en-US/wpf/thread/c404360c-8e31-4a85-9762-0324ed8812ef/You have to force an update via
UpdateTarget()
. Take a look at http://social.msdn.microsoft.com/forums/en-US/wpf/thread/c404360c-8e31-4a85-9762-0324ed8812ef/