Silverlight列表框:绑定不会更新

时间:2011-07-07 11:13:55

标签: data-binding silverlight-4.0 observablecollection

我有一个包含多个步骤的向导控件。从可视树中删除不可见的控件。我在一个页面上有一个ListBox,它绑定到ObservableCollection<T>。当项目在一个页面上添加或删除到ListBox时,另一个页面上的ListBox(具有相同的ItemsSource),其他页面上的绑定不会更新。我希望这足以清楚地解释我的问题。

当页面再次添加到可视化树时,如何更新此绑定?

2 个答案:

答案 0 :(得分:1)

我无法重现你的问题。我能够从可视化树中删除ListBox,将对象添加到ObservableCollection,当我将它添加到可视化树时,项目实际上已更新。

尝试通过设置Collapsed的可见性而不是从Visual Tree中删除来解决您的问题。

public partial class MainPage : UserControl
{
    public MainPage()
    {
        InitializeComponent();

        this.listBox1.ItemsSource = o;
        this.listBox2.ItemsSource = o;
    }

    ObservableCollection<int> o = new ObservableCollection<int>();
    private void buttonList1_Click(object sender, RoutedEventArgs e)
    {
        if (this.listBox1.Parent == null)
            this.LayoutRoot.Children.Add(this.listBox1);
        else
            this.LayoutRoot.Children.Remove(this.listBox1);

        //this.listBox1.Visibility = this.listBox1.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
    }

    private void buttonList2_Click(object sender, RoutedEventArgs e)
    {
        if (this.listBox2.Parent == null)
            this.LayoutRoot.Children.Add(this.listBox2);
        else
            this.LayoutRoot.Children.Remove(this.listBox2);

        //this.listBox2.Visibility = this.listBox2.Visibility == Visibility.Visible ? Visibility.Collapsed : Visibility.Visible;
    }

    private void ButtonAddMore_Click(object sender, RoutedEventArgs e)
    {
        o.Add(o.Count);
    }

}

答案 1 :(得分:0)

This听起来对你的问题非常熟悉......希望有所帮助。