【问题标题】:WPF Wait for Binding to be doneWPF 等待绑定完成
【发布时间】:2011-06-29 12:09:17
【问题描述】:

我得到了以下 XAML:

<ng:Chart Palette="TheTreesPalette">
    <ng:Chart.Diagrams>
        <Diagram Key="PersonnelHoursAWeek" For="{Binding}" Value="BarSeries3D" />
        <Diagram Key="PersonId" For="{Binding}" Value="BarSeries3D" />
    </ng:Chart.Diagrams>
</ng:Chart>

在代码中:

  • Chart 是一个普通的 ContentControl。
  • Diagrams 是 Chart 中的一个集合(和 DependencyObject)和 DependencyProperty
  • Diagram 是 Diagrams 中的一个 DependencyObject

将图表添加到图表列表时,需要更新我的图表。通过使用 DependencyProperty.Register,我已经注册了“图表”列表,但它不会等待绑定(因此当“事件”通过时,(图表的)For 属性为空)。

chart.cs:

public static readonly DependencyProperty DiagramsProperty = DependencyProperty.Register("Diagrams", typeof(SkillsNG.Application.Behaviors.DiagramCollection), typeof(Chart), new UIPropertyMetadata(null, FunctionToCall));
private static void FunctionToCall(DependencyObject @this, DependencyPropertyChangedEventArgs e)
{
}

我可以做些什么来获得填充的 For 属性?

顺便说一句,“Loaded”事件还没有绑定。

再解释一下: 图表可以有多个条/线,For 属性会将数据集提供给一个条/线(在我的示例中称为图表)。 Key是它的DataMember。

绑定是对给定视图的模型的绑定。但 Binding 可以是“Binding Set1”和“Binding Set2”(我要显示的行的数据集)。

绑定是 100% 正确的,当我等待一秒钟将其全部绑定时,我的图表将显示。所以我希望那个八卦图通知图表它已经被改变了,或者图表可以添加一个事件(Diagram.ForProperty.AddOwner 之类的构造)。

【问题讨论】:

    标签: c# wpf xaml binding


    【解决方案1】:

    不确定您的 Chart DataContext 设置为什么(这是子元素上的 {Binding} 将给您的),但 Diagrams 集合及其成员不是元素,因此不会成为 Wpf 逻辑树的一部分,因此不会继承父图表 DataContext。当您在调试中运行它时,我希望在输出窗口中看到绑定错误。

    我认为您基本上遇到了与此问题相同的问题:How to bind the same collection of values into all ComboBoxes in a DataGridComboBox?,它提供了一种解决方案,用于在 Wpf 逻辑树中弥合这一差距。

    【讨论】:

    • 绑定是正确的,我在最初的问题中添加了一些额外的文字。
    • 鉴于 Chart 和 Diagrams 绑定到相同的 DataContext,您可以在 Chart DataContextChanged 事件中执行 Dispatcher.BeginInvoke() - 到触发子控件时将拥有它们的 DataContext。但在我看来,您实际上希望图表项在 For 属性更改时显式调用 Chart,如果是这种情况,也许您应该在代码中这样做;即在 Diagram DataContextChanged 事件中找到父 Chart 并调用一个方法来通知它刷新 - 如果你想以 Wpf 方式播放它,或者执行自定义命令。
    猜你喜欢
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 2020-10-04
    • 2020-07-04
    • 2011-12-28
    • 2011-09-08
    • 1970-01-01
    • 2011-10-14
    相关资源
    最近更新 更多