English 中文(简体)
WPF:什么能够导致一个具有约束力的来源得不到更新?
原标题:WPF: What can cause a binding source to not be updated?
  • 时间:2009-10-30 16:48:25
  •  标签:

我不敢肯定如何解冻。 我希望有人能够说明为什么它可能不发挥作用,并且向我指出了正确的方向。

我从一个数据库中掌握了政府间森林论坛的形象,该数据库作为类型<编码>的特性。 我想在<代码>上展示从政府间森林论坛图像中得出的各个框架。 页: 1 I m binding ItemsControl.ItemsSource to Binary property using the transformer as with Mode=TwoWay" and UpdateSourceTrigger=PropertyChanged"

图像的显示正在打上。 问题在于,如果我为收集显示最新情况增添一个框架,但这一变化不会被退回到源物的不动产。 我的转换器中的<代码>ConvertBack()方法从未被称作(对我来说,约束力甚至从未试图更新来源)。 如果我人工打电话到<条码>表示。 更新版(<>/代码>) UpdateSourceTrigger=Explicit". Binary property do better Update.

因此,如果对<代码>Mode=TwoWay>和有约束力的话, UpdateSourceTrigger=PropertyChanged" 和物体执行INotificationPropertyChanged( ObserverableCollection do),为什么具有约束力的文书实际上试图更新来文方?

感谢!

最佳回答

之所以出现这种情况,是因为对2Way具有约束力,WPF只是在财产获得新价值时,而不是在财产变更中注明的物体时,才会发现。

您的财产包括您的皈依者建立的可观的雕像。 尽管对可观察的Collection的内容进行了修改,并用INotificationpertyChanged为火,但受约束的财产本身并没有改变: 它仍然与以前一样有同样的可观察的捕获。 因此,没有启动WPF数据集,也没有更新来源。

当你人工使用最新数据时,它迫使可以观测到的Collection通过您的转换者,然后回到你的数据物体,以便其发挥作用。

了解你所希望的行为的最容易的方法是:

  1. 对数据领域没有约束力,而是对数据标有约束力,并抽取了换算人所期望的领域(如果你想要成为能够进入任何领域的通用换算人,将外地作为参数)。

  2. 在你建造可观测到的孔隙时,添加了“采集系统”活动,每当其火灾时更新原物体。

这里是法典中的一般思想:

  public MyConverter : IValueConverter
  {
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
      PropertyInfo property = object.GetType().GetProperty((string)parameter);

      var coll = BinaryToCollection((Binary)property.GetValue(object, null));

      coll.CollectionChanged += (sender, e) =>
      {
        property.SetValue(object, CollectionToBinary(coll));
      };
      return coll;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
      throw new NotImplementedException();
    }

    private ObservableCollection<SomeType> BinaryToCollection(Binary data)
    {
      // conversion details here
    }

    private Binary CollectionToBinary(ObservableCollection<SomeType> coll)
    {
      // conversion details here
    }

  }

在此情况下,你的约束力将改变。

 <ItemsControl ItemsSource="{Binding something.property, Mode=TwoWay, Converter={...}}"

纽约总部

  <ItemsControl ItemsSource="{Binding something, Converter={...}}"

不动产名称

希望这一帮助!

问题回答

我利用这一博客成功地帮助克服具有约束力的问题。 具体来说,“等级”方法。

Bea Stollnitz - How can I debug WPF bindings?





相关问题
热门标签