我想了解在2009年11月工具包中實現的DataForm,我無法弄清楚如何將ComboBox綁定到枚舉。有誰知道DataForm如何自動執行此操作?Silverlight DataForm如何自動生成從ComboBox到枚舉的綁定?
背景
首先我創建的類和枚舉,以下this物品並允許數據形來生成字段。 DataForm爲名稱字符串字段生成一個TextBox,並且(我認爲是)用於流派枚舉字段的組合框。
我理解如何自定義DataForm的第一個目標是重現自動生成中產生的內容。我設法做文本框(和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不起作用。有很多文章都涉及到這一點,但他們提出的很多建議對於自動生成器來說太多了(例如,將ComboBox的子類化以提供SelectedValue)。你知道這些工具是如何爲我們做的嗎?
看起來你可以使用你的第一個給予好評...好答案。 – mkedobbs 2010-01-12 03:00:18
這是一個很好的,詳細的答案,但我沒有問我該怎麼做,我問DataForm如何做,所以我沒有接受它作爲答案。 – serialhobbyist 2010-01-18 09:59:21