依赖属性强制绑定问题

发布于 2024-09-05 09:38:19 字数 913 浏览 9 评论 0原文

我安装了 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文