0

我有ComboBox一个 VB.Net WPF 应用程序。

<ComboBox HorizontalAlignment="Left" Margin="77,49,0,0" VerticalAlignment="Top" Width="120" ItemsSource="{Binding Path=Server.RecipeList()}" DisplayMemberPath="RecipeID" SelectedValuePath="RecipeID"/>

在代码隐藏中,我有一个名为 Server 的类变量:

Public Server As BatchServer = New BatchServer

在我的服务器对象中,我有一个List

Private mRecipeList As New List(Of Recipe)

我的服务器默认构造函数是

Public Sub New()
    Server = New BatchRemote.RemoteSupport
    PopulateRecipeList()
End Sub

我想将此绑定ListComboBox,因此它应该显示我列表中每个食谱的 RecipeID。我的数据绑定看起来和第一个代码块中的一样,但是当我运行应用程序时,ComboBox它总是空的。

我在这里做错了什么?

4

2 回答 2

0

首先,您需要声明Serverpublic Property 正确实现INotifyPropertyChanged接口的 a 。然后你需要对RecipeList. 然后你应该能够Bind喜欢这个:

<ComboBox HorizontalAlignment="Left" Margin="77,49,0,0" VerticalAlignment="Top" 
Width="120" ItemsSource="{Binding Path=Server.RecipeList}" DisplayMemberPath="RecipeID"
SelectedValuePath="RecipeID" />
于 2013-10-31T17:23:50.003 回答
0

您的代码不起作用,因为您绑定到一个简单的列表,因此当您添加或删除某些列表元素时属性不会更新。

将辅助列表声明为 ObservableCollection在窗口中阅读更多内容并绑定到组合,例如:

Private Property auxRecipeList As New ObservableCollection(Of Recipe)

然后在 xaml 中执行如下绑定:

<ComboBox HorizontalAlignment="Left" Margin="77,49,0,0" VerticalAlignment="Top" Width="120" ItemsSource="{Binding auxRecipeList, Mode=TwoWay, UpdateSourcetrigger=PropertyChanged}" DisplayMemberPath="RecipeID" SelectedValuePath="RecipeID"/>
于 2013-10-31T18:19:28.267 回答