将field
绑定到script
时遇到一个小问题,并将初始值保持在_value
。
我在.NET 4.5.2中使用WPF。
现在问题是我得到一个ComboBox
一个绑定SelectedValue
,其中包含几个条目(不包括null
)和一个绑定ComboBox
。绑定本身工作正常,但在某些情况下,我希望ItemsSource
的初始值为null
。存储在绑定属性中的值为SelectedValue
。但是一旦创建了绑定,SelectedValue
首先获取null
值,然后将其更新为列表中的第一个值。
在此日志中可以看到:
null
最后4行显示我没想到的更新。我可以在绑定的init之后将值设置为ComboBox
,但它会覆盖初始值,这是我不想要的。
绑定本身很简单:
null
背后的财产也非常简单:
System.Windows.Data Warning: 56 : Created BindingExpression (hash=34124640) for Binding (hash=55728099)
System.Windows.Data Warning: 58 : Path: 'SelectedIncomingPort'
System.Windows.Data Warning: 62 : BindingExpression (hash=34124640): Attach to System.Windows.Controls.ComboBox.SelectedValue (hash=38686306)
System.Windows.Data Warning: 67 : BindingExpression (hash=34124640): Resolving source
System.Windows.Data Warning: 70 : BindingExpression (hash=34124640): Found data context element: ComboBox (hash=38686306) (OK)
System.Windows.Data Warning: 78 : BindingExpression (hash=34124640): Activate with root item UIPathNode (hash=12632436)
System.Windows.Data Warning: 107 : BindingExpression (hash=34124640): At level 0 using cached accessor for UIPathNode.SelectedIncomingPort: RuntimePropertyInfo(SelectedIncomingPort)
System.Windows.Data Warning: 104 : BindingExpression (hash=34124640): Replace item at level 0 with UIPathNode (hash=12632436), using accessor RuntimePropertyInfo(SelectedIncomingPort)
System.Windows.Data Warning: 101 : BindingExpression (hash=34124640): GetValue at level 0 from UIPathNode (hash=12632436) using RuntimePropertyInfo(SelectedIncomingPort): <null>
System.Windows.Data Warning: 80 : BindingExpression (hash=34124640): TransferValue - got raw value <null>
System.Windows.Data Warning: 83 : BindingExpression (hash=34124640): TransferValue - null-value conversion produced <null>
System.Windows.Data Warning: 89 : BindingExpression (hash=34124640): TransferValue - using final value <null>
System.Windows.Data Warning: 90 : BindingExpression (hash=34124640): Update - got raw value NodePort (hash=28905541)
System.Windows.Data Warning: 93 : BindingExpression (hash=34124640): Update - implicit converter produced NodePort (hash=28905541)
System.Windows.Data Warning: 94 : BindingExpression (hash=34124640): Update - using final value NodePort (hash=28905541)
System.Windows.Data Warning: 102 : BindingExpression (hash=34124640): SetValue at level 0 to UIPathNode (hash=12632436) using RuntimePropertyInfo(SelectedIncomingPort): NodePort (hash=28905541)
问题是我不明白为什么会更新此更新。我不知道如何阻止它。
我试图在没有任何运气的情况下翻转null
和<ComboBox ItemsSource="{Binding IncomingPorts}" MinWidth="150"
SelectedValue="{Binding SelectedIncomingPort, Mode=TwoWay, diag:PresentationTraceSources.TraceLevel=High}"
ToolTip="{Binding SelectedIncomingPort.PatchedPortTitle, Converter={StaticResource EmptyStringToNullConverter}, FallbackValue={x:Null}}"
Style="{DynamicResource PortComboBox}" />
的定义,我尝试添加Public Property SelectedIncomingPort As API.IUIPathNodePort Implements API.IUIPathNode.SelectedIncomingPort
Get
Return _node.SelectedIncomingPort
End Get
Set(value As API.IUIPathNodePort)
If Object.Equals(_node.SelectedIncomingPort, value) Then
Return
End If
_node.SelectedIncomingPort = value
NotifyPropertyChanged(Function() SelectedIncomingPort)
End Set
End Property
所有允许的值,但没有成功。
问题在于我不知道何时以及是否创建了绑定,因为ItemSource
存储在SelectedItem
上,并且只有在用户实际查看它时才会创建。
有谁知道如何解决这个问题?我只希望ComboBox坚持原始值。