我的代码中有几个绑定,但我不确定为什么只有这个在 xaml 中失败。
<ItemsControl.ItemTemplate>
<DataTemplate>
<wpfExp:SignalGraph
x:Name="signal_graph"
Height="{Binding ElementName=signal_box, Path=GraphHeight, Mode=OneWay}"
<!--PenWidth="{Binding ElementName=signal_box, Path=GraphPenWidth, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"-->
Signal="{Binding}"
signal_graph_window_width="{Binding ElementName=signal_box, Path=signal_graph_window_width, Mode=OneWay}"
X_Scale="{Binding ElementName=signal_box, Path=X_Scale, Mode=OneWay}"
MaxTimeValue="{Binding Source = {StaticResource ResourceKey=signal_data}, Path = MaxTimeValue, Mode=OneWay}"
/>
只有注释行失败。同时,如果我进入后面的代码:
private void SignalGraph_Loaded(object sender, RoutedEventArgs e)
{
loaded = true;
Binding b1 = new Binding();
b1.ElementName = "signal_box";
b1.Path = new PropertyPath("GraphPenWidth");
b1.Mode = BindingMode.OneWay;
b1.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
this.SetBinding(PenWidthProperty, b1);
Width = signal_graph_window_width;
SignalBox sb = VisualTreeUtilities.FindVisualParent<SignalBox>(this);
DrawSignals();
}
这行得通。对我来说,它们看起来都一样。
但我能想到的唯一可能的解释是,也许当我在 xaml 中编写绑定时,绑定发生在不同的时间,而不是像后面的代码那样发生在加载事件上。如果在实际创建信号图之前为时过早,那么它可能没有正确绑定?但我没有收到绑定错误消息。很困惑。