Grundsätzlich müssen Sie das Datagrid an eine Sammlung binden
<DataGrid
ItemsSource="{Binding Lines}" AutoGenerateColumns="True"
Ich werde die Erstellung des Wörterbuchs mit Stub-Funktionen in der c.tor Ansichtsmodell genannt Mock-up
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");
}
}
}
, wo die darunterliegende Klasse ist wie folgt definiert
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;
}
}
}
Beachten Sie, dass die Übersetzungen haben nur ein Getter, um die Zeichenfolge aus dem Wörterbuch abzurufen. Sie können sie leicht bearbeiten, indem Sie einen Setter hinzufügen, um die neue Übersetzung in eine Persistenzschicht zu speichern. Darüber hinaus sind englische und russische Wörterbücher generisch genug, um in Wörterbücher umbenannt zu werden. Sobald der Benutzer eine Sprache in einer anderen Combobox auswählt, können Sie das Wörterbuch entsprechend zurücksetzen. Da ich einen Stummel hier haben, ist die Setter nicht viel Sinn machen, aber nur Sie und Idee zu geben ...
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
}
}
tun Sie MVVM wissen? Ist es in Ordnung für Sie, wenn ich Ihnen ein Beispiel zeige, vorausgesetzt Sie haben eine ViewModelBase? –
Problem ist, dass die Objekte in Dictionary dynamisch mit JSON Deserializer erstellt werden ... so habe ich keine Ahnung, was Key oder Value Werte sein werden ... oder, gibt es eine Möglichkeit mit MVVM, dies zu erreichen? – user3239349
Ok, ich werde die Erstellung des Wörterbuchs mit einer Stub-Funktion, die in der vm c.tor –