В основном вам нужно связать DataGrid к коллекции
<DataGrid
ItemsSource="{Binding Lines}" AutoGenerateColumns="True"
Я макет создания словаря с функциями окурка называется в ViewModel c.tor
public class MyVM : ViewModelBase
{
public MyVM()
{
Line.DictionaryEng = Line.DictionaryEngStub();
Line.DictionaryRu = Line.DictionaryRuStub();
lines = new ObservableCollection<Line>(Line.DictionaryEng.Keys.Select(k => new Line() { KeyWord = k }));
}
private ObservableCollection<Line> lines;
public ObservableCollection<Line> Lines
{
get { return lines; }
set
{
lines = value;
OnPropertyChanged("Lines");
}
}
}
где базовый класс определяется следующим образом:
public class Line : ViewModelBase
{
internal static Dictionary<string, string> DictionaryEngStub()
{
return new Dictionary<string, string>()
{
{ "first_page_name ","First page" },
{ "second_page_name ","Second page" }
};
}
internal static Dictionary<string, string> DictionaryRuStub()
{
return new Dictionary<string, string>()
{
{"first_page_name ","Первая страница" },
{"second_page_name ","Вторая страница" }
};
}
internal static Dictionary<string, string> DictionaryEng = new Dictionary<string, string>();
internal static Dictionary<string, string> DictionaryRu = new Dictionary<string, string>();
private string keyWord;
public string KeyWord
{
get { return keyWord; }
set
{
keyWord = value;
OnPropertyChanged("keyWord");
}
}
public string EnglishWord {
get
{
string english;
if (DictionaryEng.TryGetValue(keyWord ?? "", out english))
{
return english;
}
return null;
}
}
public string RussianhWord
{
get
{
string russian;
if (DictionaryRu.TryGetValue(keyWord ?? "", out russian))
{
return russian;
}
return null;
}
}
}
Обратите внимание, что переводы имеют только получатель для извлечения строки из словаря. Вы можете легко сделать их редактируемыми, добавив сеттер, чтобы сохранить новый перевод в слой сохранения. Кроме того, английские и русские словари достаточно универсальны для переименования в словари. Когда пользователь выбирает язык в другом поле со списком, вы можете соответствующим образом изменить словарь. Так как у меня окурок здесь, сеттер не имеет особого смысла, но только, чтобы дать вам и идея ...
private string englishSaved;
public string EnglishWord {
get
{
if (englishSaved != null)
{
return englishSaved;
}
string english;
if (DictionaryEng.TryGetValue(keyWord ?? "", out english))
{
return english;
}
return null;
}
set
{
englishSaved = value; //save the new translation into a persistence layer
}
}
вы знаете о MVVM? Это нормально для вас, если я покажу вам пример, предполагающий, что у вас есть ViewModelBase? –
Проблема в том, что объекты в словаре динамически создаются с десериализатором JSON ... поэтому у меня нет идеи, какие значения Key или Value будут ... или, существует ли способ с MVVM для достижения этого? – user3239349
Хорошо, я буду макетировать создание словаря с помощью функции заглушки, вызванной в vm c.tor –