Я работаю над проектом, в котором мне нужно привязать DataGrid к наблюдаемой коллекции следующей структуры:
public struct TranslationEntry
{
public string LangCode { get; set; }
public string LangName { get; set; }
public string Translation { get; set; }
}
Эта коллекция является свойством класса с именем TranslationModel. Я пытаюсь редактировать содержимое этой коллекции с помощью DataGrid. Вот XAML:
<DataGrid x:Name="translationGrid" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" ItemsSource="{Binding Translations, UpdateSourceTrigger=PropertyChanged}"
AutoGenerateColumns="false" IsSynchronizedWithCurrentItem="true">
<DataGrid.Columns>
<DataGridTextColumn Header="Language" Width="auto" Binding="{Binding Path=LangName, UpdateSourceTrigger=PropertyChanged}" IsReadOnly="True"/>
<DataGridTextColumn Header="Translation" Width="*" Binding="{Binding Path=Translation, UpdateSourceTrigger=PropertyChanged}"/>
</DataGrid.Columns>
</DataGrid>
И CS:
public partial class TextTranslatorWindow : Window
{
public TextTranslatorWindow(TranslationModel translationModel)
{
InitializeComponent();
TranslationModel = translationModel;
grid.DataContext = TranslationModel;
}
private TranslationModel _translationModel;
public TranslationModel TranslationModel
{
get { return _translationModel; }
set { _translationModel = value; }
}
}
На данный момент TranslationModel
является просто пустым классом:
public class TranslationModel
{
public TranslationModel()
{
}
private ObservableCollection<TranslationEntry> _translations = new ObservableCollection<TranslationEntry>();
public ObservableCollection<TranslationEntry> Translations
{
get { return _translations; }
set { _translations = value; }
}
}
Привязкакажется, работает, когда элементы отображаются: Редактируемые строки
Но оказывается, что коллекция переводов не обновляется. Предыдущие значения сохраняются. Контекст данных сетки (в которой находится DataGrid) установлен в свойстве TranslationModel, поэтому проблема не связана с контекстом. Установка режима связывания столбца на Two Way также не помогла, как это предполагается в Two Way по умолчанию.
Я нашел много сообщений, касающихся противоположной проблемы: обновление источника элемента без обновления пользовательского интерфейса, но кое-что, как я не могу найти что-либо в этом.
Спасибо за вашу помощь!