ComboBox初始绑定

时间:2015-06-17 14:27:24

标签: .net wpf vb.net combobox

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坚持原始值。

0 个答案:

没有答案