Невидимые данные в списке просмотра WPF - PullRequest
0 голосов
/ 26 марта 2020

У меня небольшая проблема с диссертацией. Я использую технологию WPF и создаю Window с двумя строками и тремя столбцами (я назвал grid при Row = 0 и Column = 0 как LeftTop et c.)

К этой сетке я хочу динамически добавить специфику c UserControl (мое приложение должно быть максимально настраиваемым).

Поэтому после инициализации компонентов моего окна у меня есть методы:

        private void FillUserDashBoardComboboxes(int selectedBoardId)
        {
            List<UserDashBoards> specificBoard = userDashboard.GetUserDashBoard(selectedBoardId, User.UsrId);

            foreach (var item in specificBoard)
               SetDashboardItems(item);

            TabControlMainUserDashoard.SelectedIndex = 1;

        }

        private void SetDashboardItems(UserDashBoards specificItem)
        {
            UserControl control = GetSpecificUserControl(specificItem);

            switch(specificItem.PositionID)
            {
                case 1: 
                    LeftTop.Children.Clear();
                    LeftTop.Children.Add(control);
                    break;
            }
        }

        private UserControl GetSpecificUserControl(UserDashBoards dashBoard)
        {
            switch (dashBoard.UserGadgetId)
            {
                case 1: return new UserControls.ListViewControl(dashBoard.ProId, dashBoard.MetId);
                default: throw new InvalidDataException("Nepodporovaný typ metriky");
            }
        }

Самый важный метод (для этой ситуации) GetSpecificUserControl (третий). В этом я создаю новый экземпляр моего UserControl ListViewControl ..

XAML ListViewControl выглядит как

<Grid Grid.Row="1">
    <ListView x:Name="ListViewForSpecificMetric" Visibility="Visible"/>
</Grid>

Я создаю GridView динамически в коде позади.


private void Initialize()
        {
            DataTable dataTable = watchedMetricsProvider.GetDataFromSpecificMetric(proId,metId, firstDay, lastDay);
            GridView gv = new GridView();

            for (int i = 0; i < dataTable.Columns.Count; i++)
              gv.Columns.Add(new GridViewColumn() { DisplayMemberBinding = new Binding(dataTable.Columns[i].ColumnName), Header = dataTable.Columns[i].ColumnName, Width = 150 });

            ListViewForSpecificMetric.ItemsSource = dataTable.AsEnumerable();
            ListViewForSpecificMetric.View = gv;
        }

Все хорошо, но я не вижу свои данные в ListView Невидимые данные

Но я уверен, что ListView содержит мои данные, потому что когда я пытался добавить событие в ListViewItems

<ListView.ItemContainerStyle>
                    <Style TargetType="ListViewItem">
                        <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListViewItem_PreviewMouseLeftButtonDown" />
                    </Style>
                </ListView.ItemContainerStyle>

и щелкнуть по случайной строке, я вижу данные в своем элементе. Содержание

private void ListViewItem_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            ListViewItem item = sender as ListViewItem;
        }

Что я пробовал:

  1. Добавить элементы наборов стилей в XAML:
<ListView.ItemContainerStyle>
                    <Style TargetType="ListViewItem">
                        <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListViewItem_PreviewMouseLeftButtonDown" />
                        <Setter Property="Visibility" Value="Visible"/>
                        <Setter Property="Foreground" Value="Black"/>
                    </Style>
                </ListView.ItemContainerStyle>
Использование некоторых методов "хорошего звучания" в Code за
            ListViewForSpecificMetric.Items.Filter = null;
            ListViewForSpecificMetric.Items.Refresh();

.. но я все еще не вижу свои данные в ListView.

Кто-нибудь может мне помочь, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...