Итак, у меня есть следующий класс:
public class Data : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public object this[string field]
{
get => // gets the value
set
{
// sets the value
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Item[]"));
}
}
}
и на мой взгляд:
<DataGrid
AutoGenerateColumns="False"
ItemsSource="{Binding Rows}">
<DataGrid.Columns>
<DataGridTextColumn Header="[some_field]" Binding="{Binding Path=[some_field]}" />
<DataGridTextColumn Header="[some_other_field]" Binding="{Binding Path=[some_other_field]}" />
</DataGrid.Columns>
</DataGrid>
Это работает нормально, но когда PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Item[]"));
происходит, DataGrid
извлечет и поле "some_field"
, и поле "some_other_field"
в Data
, и я не нашел способа использовать PropertyChanged
, который заставит его обновить только поле, которое было обновлено.
Я пробовал с "Item[" + field + "]"
, "[" + field + "]"
, field
, но не повезло. Это возможно / поддерживается или я что-то не так делаю?