Список Silverlight: привязка не обновляется - PullRequest
3 голосов
/ 07 июля 2011

У меня есть элемент управления Wizard, который состоит из нескольких шагов. Элементы управления, которые не отображаются, удаляются из визуального дерева. У меня есть ListBox на одной странице, который привязывается к ObservableCollection<T>. Когда элементы добавляются или удаляются к этому ListBox на одной странице, ListBox на другой странице (с тем же ItemsSource), привязка на другой странице не обновляется. Надеюсь, это достаточно ясно объясняет мою проблему.

Как получить эту привязку для обновления, когда страница снова добавляется в визуальное дерево?

Ответы [ 2 ]

1 голос
/ 17 июля 2011

Я не могу воспроизвести вашу проблему. Мне удалось удалить 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);
    }

}
0 голосов
/ 17 июля 2011

Это звучит подозрительно знакомым для вашего вопроса ... Надеюсь, это поможет.

...