以下是有什么区别的:
所有这些依赖项属性都在Selector类中定义.我经常混淆SelectedItem与SelectedValue,并SelectedValue用SelectedValuePath.
我想知道它们之间的区别,并且当我们使用它们,尤其是SelectedValue和SelectedValuePath.请用一些简单的例子解释它们的用法.
以下代码按预期工作 - MyProperty当用户在下拉列表中选择新项目时,模型会更新.
comboBox1.DataBindings.Add("SelectedValue", myModel, "MyProperty", true,
DataSourceUpdateMode.OnPropertyChanged);
Run Code Online (Sandbox Code Playgroud)
但是,以下方法的工作方式不同,并且在输入焦点移动到窗体上的另一个控件之前不会触发模型更新:
comboBox1.DataBindings.Add("SelectedItem", myModel, "MyProperty", true,
DataSourceUpdateMode.OnPropertyChanged);
Run Code Online (Sandbox Code Playgroud)
有人知道为什么吗?我甚至不知道从哪里开始调查原因.指向正确方向开始调查或直接解释的指针同样值得赞赏.
除了:对于我而言,我最终结合两者SelectedItem和SelectedValue.这样我就可以根据UI更改(通过SelectedValue绑定)获得即时模型更新,并根据程序模型更改(通过SelectedItem绑定)进行UI更新.
这是我的绑定源对象:
Public Class MyListObject
Private _mylist As New ObservableCollection(Of String)
Private _selectedName As String
Public Sub New(ByVal nameList As List(Of String), ByVal defaultName As String)
For Each name In nameList
_mylist.Add(name)
Next
_selectedName = defaultName
End Sub
Public ReadOnly Property MyList() As ObservableCollection(Of String)
Get
Return _mylist
End Get
End Property
Public ReadOnly Property SelectedName() As String
Get
Return _selectedName
End Get
End Property
End Class
Run Code Online (Sandbox Code Playgroud)
这是我的XAML:
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300"
xmlns:local="clr-namespace:WpfApplication1"
>
<Window.Resources>
<ObjectDataProvider x:Key="MyListObject" ObjectInstance="" …Run Code Online (Sandbox Code Playgroud) 我很难通过XAML尝试将我的属性List绑定到我的组合框中.
public List<string> MyProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)
以下XAML绑定不起作用:
<ComboBox Name="cboDomainNames" ItemsSource="{Binding Path=MyProperty}"/>
Run Code Online (Sandbox Code Playgroud)
但是以下任务:
cboDomainNames.ItemsSource = MyProperty;
Run Code Online (Sandbox Code Playgroud)
工作得很好.我在这里缺少什么?
combobox ×3
data-binding ×3
wpf ×3
c# ×2
xaml ×2
binding ×1
selecteditem ×1
silverlight ×1
winforms ×1