У меня есть struct
имя точки данных , у которых есть свойство (int x и строка y), и конструктор принимает целое число и строку для присвоения их значения.Я также сделал observablecollection
этой структуры точек данных .При создании коллекции я передал строковые свойства FirstCell и SecondCell в первый и второй список, и эти FirstCell и SecondCell являются свойством, в котором реализовано изменение свойства Inotify.Теперь, когда я изменяю этот FirstCell и SecondCell, они не изменяются в сетке данных.
Ниже приведен мой код для файла MainWindow.xaml.cs
public partial class MainWindow : Window,INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged = (sender, e) => { };
private string _FirstCell="LUFFY";
private string _SecondCell= "SANJI";
public string FirstCell
{
get { return _FirstCell; }
set
{
_FirstCell = value;
PropertyChanged(this, new PropertyChangedEventArgs(nameof(FirstCell)));
}
}
public string SecondCell
{
get { return _SecondCell; }
set
{
_SecondCell = value;
PropertyChanged(this, new PropertyChangedEventArgs(nameof(SecondCell)));
}
}
private ObservableCollection<datapoints> _CheckNotifyUpdate;
public ObservableCollection<datapoints> CheckNotifyUpdate
{
get { return _CheckNotifyUpdate; }
set
{
_CheckNotifyUpdate = value;
PropertyChanged(this, new PropertyChangedEventArgs(nameof(CheckNotifyUpdate)));
}
}
public MainWindow()
{
InitializeComponent();
this.DataContext = this;
CheckNotifyUpdate = new ObservableCollection<datapoints>
{
new datapoints(1, FirstCell),
new datapoints(2, SecondCell)
};
}
}
public struct datapoints
{
public int x { get; set; }
public string y { get; set; }
public datapoints(int X,string Y)
{
x = X;
y = Y;
}
}
Это мой XAML-файл
<Window x:Class="InotifyClassPropInsideList.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:InotifyClassPropInsideList"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance Type=local:MainWindow, IsDesignTimeCreatable=True}"
Title="MainWindow" Height="450" Width="400">
<StackPanel>
<TextBox Text="{Binding FirstCell}" Margin="10"/>
<TextBox Text="{Binding SecondCell}" Margin="10"/>
<StackPanel Orientation="Horizontal">
<Label Content="The First Cell Value (Y1 in DataGrid) is : "/>
<Label Content="{ Binding FirstCell}"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<Label Content="The Second Cell Value is (Y2 in DataGrid) : "/>
<Label Content="{ Binding SecondCell}"/>
</StackPanel>
<Button Content="Button" Margin="50"/>
<DataGrid SelectedIndex="{Binding SelectedDataIndex, Mode=TwoWay}"
ItemsSource="{Binding CheckNotifyUpdate }" AutoGenerateColumns="True"
HorizontalAlignment="Center"></DataGrid>
</StackPanel>
</Window>
Токовый выход подобен этому ![enter image description here](https://i.stack.imgur.com/opYNP.png)
Я проверил, реализован ли InotifyPropertychanged или нетпроверка их значения в метке ниже, и она обновляется соответственно, но сетка данных не обновляется.Например, если я изменяю значение luffy и записываю Zoro в первое текстовое поле, то первая метка в выводе (Значение первой ячейки (Y1 в DataGrid равно): Zoro, но вывод в первой строке таблицы Y по-прежнему LUFFY.
PS. Я пишу эту программу для имитации своей ситуации, когда пытаюсь использовать точки данных из OxyPlot, поэтому я должен использовать struct и не могу использовать класс для точек данных .