【发布时间】:2016-12-14 19:15:58
【问题描述】:
我目前有一个存在于 ListView 中的 ComboBox。该 ComboBox 的 ItemSource 绑定到一个 StaticResource Enum,它使用我想提供给用户的枚举值填充 ComboBox。 ListView 本身绑定到一个 Observable 对象集合,该集合具有与我要呈现的枚举相关联的属性。这大部分都在工作。
ComboBox 正确显示并展示了 Enum 中的值。它甚至开始填充我创建的枚举中的第一项。但是,我试图让它显示 Listview 正在呈现的 Object 的实际 Enum 值,它目前没有这样做。我认为我将 SelectedValue 和 SelectedValuePaths 设置为的内容存在问题,但我无法找出确切的问题。
这是我现在用于 ComboBox 的 XAML。
<DataTemplate>
<ComboBox ItemSource={Binding Source={StaticResource dataFromStatusesEnum}}
SelectedValue="{Binding JMessage3, Mode=TwoWay"}"
SelectedValuePath="Statuses.Status"
</ComboBox>
</DataTemplate>
这是我正在填充 ListView 绑定到的 ObservableCollection 的类。
public class Entity
{
public string Name {get; set;}
public Statuses Status {get; set;}
Public Entity()
{
this.Name = "Test";
this.Status = Statuses.Disabled;
}
}
这是我现在将 ComboBox ItemSource 绑定到的枚举。
public enum Statuses
{
Enabled,
Disabled,
Deleted
}
据我了解我创建的 XAML,ListBox 正确绑定到 ItemSource 并显示我期望的信息。
ComboBox 已正确绑定到 Enum,并在 DropDown 中显示为 ComboBox 的选项。
我认为 SelectedValuePath 应该是实体类本身的 Status 属性,并且我认为 SelectedValue 应该是我希望将其设置为的枚举,但显然我的假设是错误的。
编辑:想补充一点,这目前没有使用 MVVM 模式。我最终正在努力但尚未实施的事情。
【问题讨论】:
-
首先,您的财产被称为
Stat,而不是Status。 -
是的,抱歉。这是手工复制的(关于为什么不直接复制粘贴的长篇大论)。
标签: c# wpf data-binding combobox enums