Невозможно привязать Data Grid к моей наблюдаемой коллекции объектов класса - PullRequest
0 голосов
/ 21 января 2020

Я пишу GUI, где у меня есть несколько вкладок. каждая вкладка имеет заголовок и содержание. Вкладка привязана к наблюдаемым коллекциям объекта Item. Содержимое вкладки представляет собой DataGrid, который я хочу связать с другим объектом LogGUIData (который является переменной члена класса Item). Данные заполняются чтением сокета. Я устал, чтобы найти много ответов, но не смог найти ни одного. Я знаю, что чего-то не хватает, так как я новичок в C# и программировании WPF. Мой код ниже. Заранее спасибо


<TabControl.ContentTemplate>
                        <DataTemplate>
                            <DataGrid Name="dgLogdata"  Margin="10" VerticalScrollBarVisibility="Visible" ItemsSource="{Binding LogDataOC, Mode=TwoWay}"
                                      AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" >                              
                                <DataGrid.Columns>
                                    <DataGridTextColumn Header="Header" Binding="{Binding strHeaderData}" FontFamily="Arial" />
                                </DataGrid.Columns>
                            </DataGrid>
                        </DataTemplate>
                    </TabControl.ContentTemplate>

c# код

public class Item : INotifyPropertyChanged
        {

            public string Header { get; set; }

            public static int _count = -1;
            public int Count
            {
                get { return _count; }
                set { _count = value; }
            }


            public Item()
            {
                LogDataOC = new ObservableCollection<GUILogData>();
                _count++;//increase the count of tab. This will represent the index of the tab
            }

            public event PropertyChangedEventHandler PropertyChanged;
            private void OnPropertyChanged(string propertyName)
            {
                var handler = PropertyChanged;
                handler?.Invoke(this, new PropertyChangedEventArgs(propertyName));
            }

            private ObservableCollection<GUILogData> _logDataOC { get; set; }

            public ObservableCollection<GUILogData> LogDataOC
            {
                get { return _logDataOC; }
                set
                {
                    _logDataOC = value;
                    OnPropertyChanged("LogDataOC");
                }
            }
        }

1 Ответ

0 голосов
/ 22 января 2020

Я был привязан к частному члену вместо собственности. Модифицированный код Xaml:

<TabControl.ContentTemplate>
                        <DataTemplate>
                            <DataGrid Name="dgLogdata"  Margin="10" VerticalScrollBarVisibility="Visible" ItemsSource="{Binding LogDataOC, Mode=TwoWay}"
                                      AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" >                              
                                <DataGrid.Columns>
                                    *<DataGridTextColumn Header="Header" Binding="{Binding HeaderData}" FontFamily="Arial" />*                                  
                                </DataGrid.Columns>
                            </DataGrid>
                        </DataTemplate>
                    </TabControl.ContentTemplate>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...