c# - WPF DependencyProperty 使用默认值 iso new 更新视图模型
问题描述
我正在研究我自己创建的仪表控件在启动/创建期间无法正确处理绑定的问题。一旦用户控件和视图模型被实例化并设置了所有绑定,它就可以正常工作。
我有以下控制(所有用户代码):
<linearGauge:LinearGaugeControl
Grid.Row="2"
Margin="30, 0, 0, 0"
GaugeLabel="Flow"
LinearGaugeLength="800"
LinearGaugeHeight="80"
LabelFontSize="20"
NeedleColor="Black"
Grid.Column="0" Grid.ColumnSpan="2"
DataContext="{Binding FlowGaugeData}" />
这个问题是关于上面 xaml 中的两个属性:
- LinearGaugeLength="800"
- 线性仪表高度=“80”
这些属性绑定到的视图模型LinearGaugeControl
:
<UserControl.Resources>
<Style TargetType="local:LinearGaugeControl">
<Setter Property="LinearGaugeLength" Value="{Binding GaugeSize, Mode=OneWayToSource}"/>
<Setter Property="LinearGaugeHeight" Value="{Binding BarThickness, Mode=OneWayToSource, NotifyOnSourceUpdated=True}"/>
</Style>
</UserControl.Resources>
从我之前与 DP 的斗争中,我从用户 ASh 那里学到了一些有用的东西,我可以向我的 DP 添加回调,这样我至少知道它会被触发。这很好用。DP的回调以LinearGaugeHeight
80 的“新”值(旧值 = 50)触发。
在那次事件之后,我的二传手被调用,但值错误!(50,DP的默认值)。
出了什么问题?
这是因为视图是在视图模型之前创建的吗?
回复@Clemens:
我们正在使用caliburn,这会以某种方式导致这个问题吗?我想我在某处读到 caliburn 在后台使用 DataContext=this?