组合框结合在跌落时断裂

时间:2015-09-21 08:26:19

标签: c# silverlight data-binding

我的ComboBox绑定到表单上的DependencyProperty。我可以通过Button点击向此属性添加项目,然后将其添加到ComboBox。但是,只要我下拉ComboBox绑定中断。我仍然可以向该属性添加项目,但我的ComboBox永远不会更新以显示它们。

例如

  • 点击Button三次
  • 放下ComboBox - 它将有三个项目
  • 再点击Button三次
  • 放下ComboBox - 它仍然只有三个项目

再次启动应用程序并:

  • 点击Button六次
  • 放下ComboBox - 它将有六个项目

XAML

<Grid x:Name="LayoutRoot"
      Background="White">
    <ComboBox Name="combTest"
              ItemsSource="{Binding Users}"
              Width="50"
              Height="50"
              HorizontalAlignment="Left" />
    <Button Click="ButtonBase_OnClick"
            Width="50"
            Height="50"
            HorizontalAlignment="Right" />
</Grid>

代码背后

public MainPage()
{
    InitializeComponent();
    this.DataContext = this;
}

public static readonly DependencyProperty UsersProperty = DependencyProperty.Register(
 "Users", typeof (List<string>), typeof (MainPage), new PropertyMetadata(new List<string>()));

public List<string> Users
{
    get { return (List<string>) GetValue(UsersProperty); }
    set { SetValue(UsersProperty, value); }
}

private int i = 0;

private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
   Users.Add("User " + i++);
}

1 个答案:

答案 0 :(得分:6)

使用 ObservableCollection 代替列表

ObservableCollection 会引发添加和删除集合中项目的属性更改,但列表不会。