【发布时间】:2014-10-25 17:14:51
【问题描述】:
我已经阅读了几篇文章和 stackoverflow 帖子,但我仍然对如何完成这项工作感到有些困惑。
我有一个要绑定到依赖属性的枚举列表,然后绑定到组合框。当我加载程序时,组合框是空的。
一旦这样工作,我想在框中显示名称(即附件)和十六进制作为值。
XAML:
<ComboBox ItemsSource="{Binding BodyTypeFlags}" />
C#:
public enum BodyTypeFlagsTS4
{
Accessory = 0x0000000A,
Blush = 0x00000020
}
public BodyTypeFlagsTS4 BodyTypeFlags
{
get { return (BodyTypeFlagsTS4)GetValue(BodyTypeFlagsProperty); }
set { SetValue(BodyTypeFlagsProperty, value); }
}
public static readonly DependencyProperty BodyTypeFlagsProperty =
DependencyProperty.Register("BodyTypeFlags", typeof(BodyTypeFlagsTS4),
typeof(MainWindow), new PropertyMetadata(default(BodyTypeFlagsTS4)));
编辑: 我已经按照建议完成了,现在我可以在组合框中看到枚举项列表。我有两个问题:
- 如果我保持枚举不变(名称 = 十六进制),那么当我单击测试按钮时,什么也没有出现。
-
如果我删除 = hex 部分(因此,它只有附件和腮红),那么测试按钮将与附件一起返回 - 每次。即使我选择了腮红。 (我不想更改枚举格式,但这告诉我双向绑定不起作用。)
public BodyTypeFlagsTS4 BodyTypes { get { return (BodyTypeFlagsTS4)GetValue(BodyTypesProperty); } set { SetValue(BodyTypesProperty, value); } } public static readonly DependencyProperty BodyTypesProperty = DependencyProperty.Register("BodyTypes", typeof(BodyTypeFlagsTS4), typeof(MainWindow), new PropertyMetadata()); private void Button_Click(object sender, RoutedEventArgs e) { Dispatcher.BeginInvoke(new Action(() => { System.Windows.MessageBox.Show(System.Enum.GetName(typeof(BodyTypeFlagsTS4), this.BodyTypes)); })); }
【问题讨论】:
-
ItemsSource 只能绑定到
IEnumerable类型的属性,不能绑定到枚举。其次,你为什么需要依赖属性?
标签: c# wpf xaml combobox enums