0

我有一个自定义对象 Foo ,它带有一个名为 Flagged 的​​布尔属性,当有人在文本框中成功键入内容时,它会将 flagged 更改为 true 并用一些文本更新屏幕上的另一个文本块。问题是我可以让它加载初始数据,但是当用户成功输入一些东西来翻转标志时没有任何反应。

我必须在后面的代码中完成大部分工作,并且我已经在我的对象 Foo 上实现了 INotifyPropertyChanged。我下面的代码有什么问题?

谢谢。

private Border CreateNewBorder()
    {
        Border b = new Border();
        TextBlock tb = new TextBlock();
        tb.TextAlignment = TextAlignment.Center;

        b.Style = (Style)this.FindResource("myBorder");
        tb.SetBinding(TextBlock.TextProperty, CreateBinding());
        b.Child = tb;

        return b;
    }

    private Binding CreateBinding()
    {
        Binding bind = new Binding();
        bind.Source = Foo;
        bind.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
        bind.Mode = BindingMode.TwoWay;
        bind.Path = new PropertyPath("Flagged");
        bind.Converter = new BoolToStringConverter();

        return bind;
    }
4

1 回答 1

1

听起来您可能只是缺少 Foo 上的更改通知。您是否在 Foo 上实现了 INotifyPropertyChanged 并从 Flagged setter 调用了 PropertyChanged 事件?

于 2010-03-16T03:48:50.590 回答