- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图理解 DataForm 在 2009 年 11 月的工具包中实现,但我不知道如何将 ComboBox 绑定(bind)到枚举。有谁知道 DataForm 是如何自动执行此操作的?
背景
首先,我在 this 之后创建了一个类和一个枚举。文章并允许 DataForm 生成字段。 DataForm 为 Name 字符串字段生成了一个 TextBox,并且(我假设是)为 Genres 枚举字段生成了一个 ComboBox。
我了解如何自定义 DataForm 的第一个目标是重现自动生成中产生的内容。我设法做到了 TextBoxes(和 DatePicker,从这段代码中排除),但我正在努力将 ComboBox 绑定(bind)到枚举。
以下是类(简化):
public class Movie
{
public string Name { get; set; }
public Genres Genre { get; set; }
}
public enum Genres
{
Comedy,
Fantasy,
Drama,
Thriller
}
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;
}
<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>
最佳答案
您可以使用 IValueConverter 执行此操作:
XAML:
<ComboBox Width="100" Height="30" ItemsSource="{Binding GenreSource,Converter={StaticResource ec}}"
SelectedItem="{Binding SelectedGenre, Mode=TwoWay, Converter={StaticResource gc}}"></ComboBox>
public class DemoViewModel : ViewModel
{
public DemoViewModel()
{
}
public Type GenreSource
{
get
{
return typeof(Genres);
}
}
private Genres _SelectedGenre;
public Genres SelectedGenre
{
get { return _SelectedGenre; }
set
{
_SelectedGenre = value;
OnPropertyChanged("SelectedGrape");
}
}
}
public class EnumListConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var enumType = (Type)value;
var names = new List<string>();
foreach (var fieldInfo in enumType.GetFields(BindingFlags.Static | BindingFlags.Public))
{
names.Add(fieldInfo.Name);
}
return names;
}
public class GenreConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (Views.Genres)Enum.Parse(typeof(Views.Genres), value.ToString(), false);
}
}
关于data-binding - Silverlight DataForm 如何自动生成从 ComboBox 到枚举的绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1980486/
我正在使用 ASMX 进行服务的 Silverlight 4 + MVVM 项目。 我正在寻找 DataForm要麻烦。 IEditableObject ,绑定(bind)等似乎很痛苦。我在没有 Da
使用 DataForm 对象,我发现它可以正确地将值发布到服务器。这是截图 但是在服务器上我得到的这些对象为空。这是我的服务器端代码 @RequestMapping(method = POST
我有一个带有 AutoCommit = "False"的 DataForm 和一个绑定(bind)到命令 SaveCommand 的外部保存按钮。 如果我希望在未对数据(我使用 ViewModel)进
我想知道你是怎么做这样的事情的。假设,我们有修改树(例如菜单结构)的 MVVM CRUD 应用程序。我们有一个带有菜单项的 View 模型和两个 View :第一个带有 TreeView第二个是 Da
我正在将 DataForm 用于具有大约 40 个属性的实体。我对表单显示除 3 个属性之外的所有属性的方式感到满意。这 3 个属性恰好是项目列表。 我不想编写整个编辑模板的代码,这似乎非常适得其反。
有人可以帮忙吗? 我有这个一页应用程序来显示问题: 如果您修改字段,然后按顶部的“保存”,则更改后的字段不会显示在控制台上...
有人可以帮忙吗? 我有这个一页应用程序来显示问题: 如果您修改字段,然后按顶部的“保存”,则更改后的字段不会显示在控制台上...
我正在尝试处理来自 datafrom 外部的内部添加/删除/编辑命令表单按钮控件的数据。我正在使用 MVVMLight。例如:要在删除按钮 EventToCommand 中删除,我 Bind Comm
我有一个小的 DataForm,我想将焦点设置在第一个 TextBox 上。我正在使用 2009 年 11 月的工具包。我已经命名了 TextBox 并尝试使用 DataForm 的加载事件中的 .F
是否有一种惯用的方式来指示此模型中的字段应该是密码文本框: public class User { [Required] public string Username { get; set
我有这个代码,当您输入 ID 并按搜索时,它会正确显示数据。但是如果你想通过姓氏和身份证来寻找,它不会带来任何东西。我认为我做错了 else if 语句,但还找不到错误。 Private Sub cm
这是我的布局:
我正在寻找像 DataForm 这样的控件,它是 Silverlight 3 中的新控件,用于处理 WPF 的整个绑定(bind)和验证逻辑(声明式地使用属性属性等)。 我一直认为 SL 是 WPF
我试图理解 DataForm 在 2009 年 11 月的工具包中实现,但我不知道如何将 ComboBox 绑定(bind)到枚举。有谁知道 DataForm 是如何自动执行此操作的? 背景 首先,我
我有一个DataForm,它已设置要折叠的某些DataField的可见性,并且当用户从ComboBox选择一个选项时,应再次使某些DataField可见。 基本上(用粗略的伪代码)。 OnComboB
晚上好, 我正在寻找帮助我了解如何将 Silverlight DataForm 与使用 WCF Ria 服务的 ViewModel 结合的人。我想要完成的是使用 DataForm 管理我的实体集合并利
在 silverlight 2 中,可以通过 DataGrid 将新行添加到集合中。但在 silverlight 3 中,我不知道如何在不使用 DataForm 的情况下做到这一点。有什么想法吗? 最
我有一个绑定(bind)到一个对象的数据表单,该对象的属性用 System.ObjectModel.DataAnnotation 装饰。验证的属性。 我面临的问题是这个类的某些属性只是有条件地需要,不
我有几个组合框 在数据表单中 并试图让它禁用某些组合框,直到选择特定的组合框。为此,我创建了一个名为 CanEditCombo 的通知属性。在绑定(bind)到 DataContext 并像这样配置我
我有主/详细信息 - 数据网格/数据表单,在选择项目后它显示在数据表单中以进行更新,但我在数据绑定(bind)或用部门填充组合框并将 SelectedEmployee.departmentid 设置为
我是一名优秀的程序员,十分优秀!