我试图理解 DataForm 在 2009 年 11 月的工具包中实现,但我不知道如何将 ComboBox 绑定到枚举。有谁知道 DataForm 是如何自动执行此操作的?
背景
首先,我按照这篇文章创建了一个类和一个 Enum,并允许 DataForm 生成字段。DataForm 为 Name 字符串字段生成了一个 TextBox,并且(我假设是)为 Genres 枚举字段生成了一个 ComboBox。
我了解如何自定义 DataForm 的第一个目标是重现自动生成中产生的内容。我设法完成了 TextBoxes(和 DatePicker,从这段代码中排除),但我正在努力将 ComboBox 绑定到枚举。
以下是类(简化):
public class Movie
{
public string Name { get; set; }
public Genres Genre { get; set; }
}
public enum Genres
{
Comedy,
Fantasy,
Drama,
Thriller
}
然后在 MainPage 我这样做:
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;
}
在 MainPage.xaml 的网格中:
<dataFormToolkit:DataForm x:Name="myDataForm" AutoEdit="False" AutoCommit="False"
Header="Foo Movie DB">
</dataFormToolkit:DataForm>
对于自动生成的东西。当尝试手动生成它时,我得到了:
<dataFormToolkit:DataForm x:Name="myDataForm" AutoEdit="False" AutoCommit="False"
Header="Foo Movie DB">
<StackPanel Orientation="Vertical">
<dataFormToolkit:DataField>
<TextBox Text="{Binding Name, Mode=TwoWay}"/>
</dataFormToolkit:DataField>
<dataFormToolkit:DataField>
<ComboBox ItemsSource="{Binding Genres}"
SelectedItem="{Binding Genre, Mode=TwoWay}" />
</dataFormToolkit:DataField>
</StackPanel>
</dataFormToolkit:DataForm>
但组合框不起作用。有很多文章涵盖了这一点,但似乎他们提出的大部分内容对于自动生成器来说太多了(例如,将 ComboBox 子类化以提供 SelectedValue)。你知道这些工具是如何为我们做的吗?