Ich versuche DataForm zu verstehen, wie im November 2009 Toolkit implementiert und ich kann nicht herausfinden, wie man eine ComboBox an ein Enum bindet. Weiß jemand wie das DataForm das automatisch macht?Wie generiert Silverlight DataForm automatisch eine Bindung von einer ComboBox zu einer Enumeration?
Hintergrund
Zuerst habe ich eine Klasse und eine Enum, folgende this Artikel und erlaubt die Dataform, die Felder zu erzeugen. Das DataForm generiert eine TextBox für das Namenszeichenfolgenfeld und (was ich annehmen kann) eine ComboBox für das Feld Genres enum.
Mein erstes Ziel zu verstehen, wie Sie das DataForm anpassen, ist zu reproduzieren, was in der automatischen Generierung erzeugt wird. Ich habe es geschafft, die TextBoxen (und den DatePicker, von diesem Code ausgeschlossen) zu machen, aber ich habe Schwierigkeiten, die ComboBox an die Enumeration zu binden.
Hier sind die Klassen (vereinfacht):
public class Movie
{
public string Name { get; set; }
public Genres Genre { get; set; }
}
public enum Genres
{
Comedy,
Fantasy,
Drama,
Thriller
}
und dann in Mainpage mache ich das:
private ObservableCollection<Movie> movies = new ObservableCollection<Movie>();
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
Movie movie = new Movie() { Name = "Fred", Genre = Genres.Thriller };
movies.Add(movie);
myDataForm.ItemsSource = movies;
}
und in der MainPage.xaml im Grid:
<dataFormToolkit:DataForm x:Name="myDataForm" AutoEdit="False" AutoCommit="False"
Header="Foo Movie DB">
</dataFormToolkit:DataForm>
für das automatisch generierte Zeug. Beim Versuch, es manuell zu generieren, habe ich stattdessen:
aber die ComboBox funktioniert nicht. Es gibt eine Menge Artikel, die dies abdecken, aber es scheint, dass vieles von dem, was sie vorschlagen, zu viel ist, als dass ein Auto-Generator dies tun könnte (z. B. Subclassing von ComboBox, um SelectedValue bereitzustellen). Weißt du, wie die Werkzeuge es für uns tun?
Sieht aus wie Sie Ihre erste upvote ... gute Antwort verwenden könnte . – mkedobbs
Es ist eine gute, detaillierte Antwort, aber ich habe nicht gefragt, wie ich das machen könnte, ich habe gefragt, wie das DataForm es macht, also habe ich es nicht als Antwort akzeptiert. – serialhobbyist