Как считать элементы, присутствующие в сетке данных WPF, и отображать их на другой странице?

1

Я работаю в приложении С# WPF с использованием модели MVVM. У меня есть DataGrid, в котором я добавляю несколько значений, и я хочу подсчитать количество элементов, присутствующих в сетке, и отобразить это значение на другой странице. Проблема в том, что счетчик отображается на той же странице, где у меня есть мой DataGrid, но он не отображает счет на другой странице.

Мой код выглядит следующим образом:

public ObservableCollection<VLANSPropertyClass> vlan { get; set; }   

<TextBlock Margin="3,0"  
           Style="{StaticResource SummaryValues}"  
           Text="{Binding vlan.Count}"
          />

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

  • 0
    У этих двух страниц один и тот же DataContext?
  • 0
    Неужели у вас просто одинаковая ViewModel для обеих страниц!
Показать ещё 4 комментария
Теги:
wpf
observablecollection
mvvm
datagrid

1 ответ

0

Сделайте свой ViewModel одним экземпляром. то есть.

public class ViewModel
{
    private static ViewModel instance = new ViewModel();

    private ViewModel()
    {

    }

    public static ViewModel Instance
    {
        get
        {
            if (instance == null)
                instance = new ViewModel();
            return instance;
        }
    }

    public ObservableCollection<string> vlan { get; set; }
}

Затем вы можете в своем первом окне установить DataContext в ViewModel.Instance, т.е.

public MainWindow()
    {
        InitializeComponent();
        this.DataContext = ViewModel.Instance;
        ViewModel.Instance.vlan=new ObservableCollection<string> { "Fred", "Theo", "Lil Kitty" };
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        ViewModel.Instance.vlan.Add(String.Format("String {0}", ViewModel.Instance.vlan.Count + 1));

        Window1 win = new Window1();
        win.Show();
    }

Тогда у вас может быть другое окно, которое также устанавливает DataContext в ViewModel.Instance, то есть:

public Window1()
    {
        InitializeComponent();
        this.DataContext = ViewModel.Instance;
    }

Это позволит вам установить оба окна в SAME-экземпляр ViewModel, и вы все равно можете привязываться так же в каждом окне (мой пример каждый раз создает новое окно и обновляет счет во всех окнах и т.д.):

<TextBlock Text="{Binding vlan.Count}" />
  • 0
    @CodeTheft у тебя получилось?
  • 0
    @CodeTheft ответил на твой вопрос? Пожалуйста, отметьте это, если оно имеет ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню