我有一个wpf c#应用程序。将组合框绑定到ObservableCollection
我正在使用组合框,并将其itemsource属性设置为可观察集合。
我遇到的问题是,当我修改此集合时,更改不会反映在我的下拉列表中。
所以我想知道我做错了什么?
这是我的类对象:
public class JobTicker
{
public string CustomerRef { get; set; }
public string JobRef { get; set; }
public int JobId { get; set; }
public string CustomerJobDetails { get; set; }
public string CustomerName { get; set; }
}
我绑定到我的收藏:
ActiveState.JobsActive = new ObservableCollection<JobTicker>('data from a list');
我收集变量声明:
public static ObservableCollection<JobTicker> JobsActive = new ObservableCollection<JobTicker>();
我的组合框(这是在我的应用程序启动时加载的我的用户控件)
<xctk:WatermarkComboBox x:Name="cboActiveJobs" Grid.Row="1" Grid.Column="2"
Width="250" Watermark="Select Customer"
DisplayMemberPath="CustomerJobDetails"
HorizontalContentAlignment="Center"
SelectionChanged="cbo_SelectionChanged"
DropDownOpened="cbo_DropDownOpened"
DropDownClosed="cbo_DropDownClosed"
Style="{StaticResource ComboBoxFlatStyle}"
/>
和我的代码背后:
cboActiveJobs.ItemsSource = ActiveState.JobsActive;
现在,如果我修改“ActiveState.JobsActive”我希望反映在我的下拉变化,但事实并非如此。
这会解释很多。谢谢:) –
我将不得不考虑实现一个虚拟机。这在你看到的wpf中是知道的。 –
@AndrewSimpson啊,是的。一旦你开始从视图模型绑定属性,大多数WPF将变得更有意义。对此没什么要求:实现[INotifyPropertyChanged](https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged(v = vs.110)。aspx)并适当地启动通知。对于将要由UI使用的集合,请使用您已经使用的ObservableCollection泛型。 –